【问题标题】:Foward-fill dataframe based on mask. Fill with last valid value基于掩码前向填充数据帧。填写最后一个有效值
【发布时间】:2021-03-21 01:38:02
【问题描述】:

我有一个如下的数据框:

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 的列中的最后一个值。 我怎样才能得到这个?

【问题讨论】:

    标签: pandas dataframe python-2.x


    【解决方案1】:

    让我们试试吧:

    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().where(~df.isnull()) 如果你的 pandas 版本是
    猜你喜欢
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 1970-01-01
    • 2023-01-16
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    相关资源
    最近更新 更多