首页 > 解决方案 > 如果在 first_valid_date 之后,则从数据帧中获取布尔数据帧,否则为 false

问题描述

我有一个像这样的几个 NaN 的数据框:

              A    B    C
2021-08-31  1.0  NaN  NaN
2021-09-01  2.0  NaN  5.0
2021-09-02  4.0  3.0  NaN
2021-09-03  NaN  7.0  NaN
2021-09-06  2.0  5.0  NaN
2021-09-07  9.0  NaN  5.0
2021-09-08  4.0  5.0  NaN

我想要一个数据框,对于每一列,如果元素是 first_valid_date 或之后,则为 True,否则为 False:

             A      B      C
2021-08-31  True  False  False   
2021-09-01  True  False  True
2021-09-02  True  True   True
2021-09-03  True  True   True
2021-09-06  True  True   True
2021-09-07  True  True   True
2021-09-08  True  True   True



标签: pythondataframe

解决方案


您可以fillna()使用ffill逐行填充所有值。然后,调用df.notna()将返回True非缺失值和False缺失值:

>>> df.fillna(method='ffill').notna()

               A      B      C
date                          
31/08/2021  True  False  False
01/09/2021  True  False   True
02/09/2021  True   True   True
03/09/2021  True   True   True
06/09/2021  True   True   True
07/09/2021  True   True   True
08/09/2021  True   True   True

推荐阅读