【发布时间】:2021-09-10 20:46:20
【问题描述】:
我有一个包含不同列的数据框。在实际值开始之前,某些列可能以一系列 NaN 值开始。但是,在每列的第一个非 NaN 值之后,也可以出现一些 NaN 值。例如:
A B C
2021-08-31 1.0 NaN 5.0
2021-09-01 2.0 NaN NaN
2021-09-02 4.0 3.0 NaN
2021-09-03 NaN 7.0 5.0
2021-09-06 2.0 5.0 5.0
2021-09-07 9.0 NaN 5.0
2021-09-08 4.0 5.0 NaN
我想删除所有存在 NaN 值的行但仅在列中的第一个非 NaN 值之后。换句话说,第一个非 NaN 值之前的 NaN 值在删除过程中不考虑在内。
所以前面的例子看起来像这样:
A B C
2021-08-31 1.0 NaN 5.0
2021-09-06 2.0 5.0 5.0
我开始使用“first_valid_date”列表寻找解决方案,然后在列的 first_valid_date 加上值为 NaN 之后的索引条件下删除,但我在使用 2 个条件(NaN)删除值时遇到问题和索引):
df.drop(df[df.isna().any(axis=1) & df.index > mydateindex].index)
【问题讨论】: