【问题标题】:Pandas set all values after first NaN to NaN熊猫将第一个 NaN 之后的所有值设置为 NaN
【发布时间】:2020-07-22 11:47:10
【问题描述】:

对于每一行,我想在第一个 NaN 出现后将所有值设置为 NaN。例如:

    a    b    c    
1   2    3    4    
2   nan  2    nan  
3   3    nan  23   

应该变成这样:

    a    b    c    
1   2    3    4    
2   nan  nan  nan  
3   3    nan  nan

到目前为止,我只知道如何在每行的每一列上使用 for 循环来执行此操作 - 这非常慢!

【问题讨论】:

    标签: python pandas numpy


    【解决方案1】:

    检查cumprod

    df=df.where(df.notna().cumprod(axis=1).eq(1))
         a    b    c
    1  2.0  3.0  4.0
    2  NaN  NaN  NaN
    3  3.0  NaN  NaN
    

    【讨论】:

    • 添加到这个;尽可能避免在 Pandas 中循环!此解决方案比使用itertuplesiterrows 的方法要好得多。另外,谢谢你教会了我一些新东西!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 2018-07-05
    • 2019-02-13
    • 2017-01-04
    • 1970-01-01
    相关资源
    最近更新 更多