如何确定大熊猫非NaN系列的结束

时间:2019-05-24 13:03:21

标签: pandas nan

对于数据帧

df = pd.DataFrame([[np.nan, 3.0, 7.0], [0.0, 5.0, 8.0], [0.0, 0.0, 0.0], [1.0, 3.0, np.nan], [1.0, np.nan, np.nan]],
                  columns=[1, 2, 3], index=pd.date_range('20180101', periods=5))

              1    2    3
2018-01-01  NaN  3.0  7.0
2018-01-02  0.0  5.0  8.0
2018-01-03  0.0  0.0  0.0
2018-01-04  1.0  3.0  NaN
2018-01-05  1.0  NaN  NaN

我想知道非NaN系列(列)何时结束。结果数据框应为

                1      2      3
2018-01-01  False  False  False
2018-01-02  False  False  False
2018-01-03  False  False  False
2018-01-04  False  False   True
2018-01-05  False   True   True

我尝试与

合作
df.apply(lambda x: x.last_valid_index())

这将导致

1   2018-01-05
2   2018-01-04
3   2018-01-03

到目前为止,一切都很好。但是如何继续?欢迎所有解决方案(也包括不包含last_valid_index()的解决方案!)

1 个答案:

答案 0 :(得分:3)

使用回填缺失值和测试缺失值:

df1 = df.bfill().isna()
print (df1)
                1      2      3
2018-01-01  False  False  False
2018-01-02  False  False  False
2018-01-03  False  False  False
2018-01-04  False  False   True
2018-01-05  False   True   True

详细信息

print (df.bfill())
              1    2    3
2018-01-01  0.0  3.0  7.0
2018-01-02  0.0  5.0  8.0
2018-01-03  0.0  0.0  0.0
2018-01-04  1.0  3.0  NaN
2018-01-05  1.0  NaN  NaN