首页 > 解决方案 > Pandas 数据框分组求和,同时忽略非数值

问题描述

我有一个如下所示的数据框。'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”值分组为“LATENCY”的总和。我应该得到如下输出。

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

标签: pythonpython-3.xpandasdataframepandas-groupby

解决方案


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

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

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

推荐阅读