我在pandas df中有以下数据:
quantity color
1 White
3 White
1 Black
2 Black
我需要对重复项进行分组并获得其数量的总和:
quantity color
4 White
3 Black
我尝试以下代码首先按数量排序,然后使用groupby组合重复项并获得总和。
df1 = df.sort_values(by=['quantity','color'], ascending=False)
df2 = df1.groupby(['color']).sum()
print(df2)
我得到以下输出:
White 13
Black 12
如您所见,它并没有给我数量的总和,而只是在每种颜色的下一列(1,3)和(1,2)中并排列出了这些值。
答案 0 :(得分:1)
我相信您所提供的示例中必须有空格,这就是astype(int)
无法正常工作的原因。使用pd.to_numeric
并传递errors='coerce'
将确保我们将所有字符串值都转换为np.Nan
,这在使用groupby
时很容易处理
import pandas as pd
a = {'quantity':[1,3,1,2],'color':['White','White','Black','Black']}
df = pd.DataFrame(a)
df['quantity'] = pd.to_numeric(df['quantity'],errors='coerce')
print(df.groupby('color')['quantity'].sum())
输出:
color
Black 3
White 4