基于掩码的前向填充数据帧。填写最后一个有效值
Foward-fill dataframe based on mask. Fill with last valid value
我有一个如下所示的数据框:
index,col1,col2
1,NaN,NaN
2,NaN,NaN
3,NaN,20
4,NaN,21
5,10,22
6,11,23
7,12,24
8,13,NaN
9,NaN,NaN
还有一个布尔掩码数据框,如下所示:
index,col1,col2
1,False,False
2,False,False
3,False,False
4,False,True
5,False,False
6,False,False
7,True,True
8,True,False
9,False,False
我想将它们转换成这个最终数据框:
index,col1,col2
1,NaN,NaN
2,NaN,NaN
3,NaN,20
4,NaN,20
5,10,22
6,11,23
7,11,23
8,11,NaN
9,NaN,NaN
即:用掩码中具有 False 的列中的最后一个值向前填充掩码上匹配 True 的值。
我怎样才能得到这个?
让我们试试:
df.mask(mask).ffill().where(df.notna())
输出:
col1 col2
index
1 NaN NaN
2 NaN NaN
3 NaN 20.0
4 NaN 20.0
5 10.0 22.0
6 11.0 23.0
7 11.0 23.0
8 11.0 NaN
9 NaN NaN
我有一个如下所示的数据框:
index,col1,col2
1,NaN,NaN
2,NaN,NaN
3,NaN,20
4,NaN,21
5,10,22
6,11,23
7,12,24
8,13,NaN
9,NaN,NaN
还有一个布尔掩码数据框,如下所示:
index,col1,col2
1,False,False
2,False,False
3,False,False
4,False,True
5,False,False
6,False,False
7,True,True
8,True,False
9,False,False
我想将它们转换成这个最终数据框:
index,col1,col2
1,NaN,NaN
2,NaN,NaN
3,NaN,20
4,NaN,20
5,10,22
6,11,23
7,11,23
8,11,NaN
9,NaN,NaN
即:用掩码中具有 False 的列中的最后一个值向前填充掩码上匹配 True 的值。 我怎样才能得到这个?
让我们试试:
df.mask(mask).ffill().where(df.notna())
输出:
col1 col2
index
1 NaN NaN
2 NaN NaN
3 NaN 20.0
4 NaN 20.0
5 10.0 22.0
6 11.0 23.0
7 11.0 23.0
8 11.0 NaN
9 NaN NaN