【问题标题】:Number of NaN values before first non NaN value Python dataframe第一个非 NaN 值 Python 数据帧之前的 NaN 值数
【发布时间】:2018-04-06 04:49:20
【问题描述】:

我有一个包含几列的数据框,其中一些包含 NaN 值。我想为每一行创建另一列,其中包含列总数减去第一个非 NaN 值之前的 NaN 值的数量。

原始数据框:

ID    Value0     Value1      Value2      Value3
1       10         10           8          15 
2       NaN        45          52         NaN      
3       NaN       NaN          NaN        NaN    
4       NaN       NaN          100        150   

额外的列看起来像:

  ID    NewColumn

   1     4
   2     3
   3     0
   4     2

提前致谢!

【问题讨论】:

    标签: python-3.x pandas dataframe


    【解决方案1】:
    • 将索引设置为ID
    • 附加一个非空列以停止/捕获argmax
    • 使用argmax 查找第一个非空值
    • 从相关列的长度中减去这些值

    df.assign(
        NewColumn=
            df.shape[1] - 1 -
            df.set_index('ID').assign(notnull=1).notnull().values.argmax(1)
    )
    
       ID  Value0  Value1  Value2  Value3  NewColumn
    0   1    10.0    10.0     8.0    15.0          4
    1   2     NaN    45.0    52.0     NaN          3
    2   3     NaN     NaN     NaN     NaN          0
    3   4     NaN     NaN   100.0   150.0          2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      • 2019-07-15
      • 2014-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多