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