Pandas 基于掩码的正向填充数据帧。用最后一个有效值填充
我有一个如下所示的数据帧:Pandas 基于掩码的正向填充数据帧。用最后一个有效值填充,pandas,dataframe,python-2.x,Pandas,Dataframe,Python 2.x,我有一个如下所示的数据帧: 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,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,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
也就是说:向前填充掩码上与True匹配的值和掩码中包含False的列中的最后一个值。
我怎样才能得到这个呢?让我们试试:
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
谢谢你搞定了!pandas df.mask(mask.ffill()。其中(~df.isnull()),如果您的pandas版本<0.23.4