pandas - 如何确定 Pandas 中非 NaN 系列的结尾

标签 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() 的解决方案)!

最佳答案

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

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/

相关文章:

python - 如何创建滑动窗口并在 pandas 数据框中应用函数

python - Pandas |以逗号分隔的组的所有值进行分组

python - 属性错误: 'DataFrame' object has no attribute 'ravel'

python - 重命名非常大的 CSV 数据文件的列

machine-learning - 当我使用 RELU 激活时,为什么我的 TensorFlow 网络权重和成本为 NaN?

c++:在数学错误而不是nan中创建实际错误

python - 使用 pandas/python 进行基于优先级的分类

javascript - 从此代码返回 NaN

javascript - 尝试将数组相加,但结果返回 NaN

python - 如何预处理具有太多 NAN 值的列?