【问题标题】:Pandas dataframe groupby sum while ignoring non-numerical valuesPandas 数据框分组求和,同时忽略非数值
【发布时间】:2018-11-12 10:18:07
【问题描述】:

我有一个如下所示的数据框。 'LATENCY' 列同时包含数字和 'NA' 字符,这使得 groupby() 变得复杂。

    DEVICE       START_PRICE   LATENCY
0   ab.fxx.in    500           NA
1   ab.fxx.in    500           1    
2   ab.fxx.in    500           5
3   kddo.fxx.in  500           NA
4   kddo.fxx.in  500           5
5   kddo.fxx.in  533           3
6   kddo.fxx.in  533           NA

我想通过绕过“NA”值将数据帧按“设备”值分组为“延迟”的总和。我应该得到如下输出。

DEVICE       
ab.fxx.in      6
kddo.fxx.in    8

【问题讨论】:

    标签: python python-3.x pandas dataframe pandas-groupby


    【解决方案1】:

    您可以在使用groupby 之前将LATENCY 系列转换为数字。

    使用errors='coerce' 可确保您有NaN 值转换不成功。当您使用groupby.sum 时,pandas 会通过忽略它们来优雅地处理它们。

    df['LATENCY'] = pd.to_numeric(df['LATENCY'], errors='coerce')
    
    res = df.groupby('DEVICE')['LATENCY'].sum().reset_index()
    
    print(res)
    
            DEVICE  LATENCY
    0    ab.fxx.in      6.0
    1  kddo.fxx.in      8.0
    

    【讨论】:

      猜你喜欢
      • 2021-04-30
      • 1970-01-01
      • 2018-03-13
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      • 2014-07-01
      • 2020-05-06
      • 2023-04-09
      相关资源
      最近更新 更多