对于数据框
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()
的解决方案)!
最佳答案
使用测试缺失值回填缺失值:
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
关于pandas - 如何确定 Pandas 中非 NaN 系列的结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56293267/