Pandas数据帧组总和而忽略非数值

时间:2018-06-02 13:45:50

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

我有一个如下的数据框。 ' 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

我想通过' DEVICE'对数据框进行分组。价值与“LATENCY'的总和 - 绕过' NA'值。我应该得到如下输出。

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

1 个答案:

答案 0 :(得分:4)

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

使用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