我有一个数据集,我正试图通过userID聚合它。我需要计算每个用户的订单总数。
ID ORDER
abc 1
bcd 1
ced 1
dfd 1
bcd 1
ced 1
bcd 1
bcd 1
这是数据集
这是我使用的代码
TotalOrders=PL_training.groupby('ID').GR_ORDERS.sum().reset_index()
TotalOrders.columns=['ID','TotalOrders']
代码不进行累加,而是将值累加到一行中。我知道sum函数加起来了,但不知道为什么不起作用。令人惊讶的是,我使用了相同的代码来添加其他列,并且工作得非常好。
结果是
abc 1
bcd 1111
ced 11
dfd 1
预期结果
abc 1
bcd 4
ced 2
dfd 1
请帮我了解出了什么问题。感谢
在groupby和sum之前使用Series.astype
转换为int
:
new_df=df.copy()
new_df['ORDER']=new_df['ORDER'].astype(int)
new_df.groupby('ID')['ORDER'].sum()
或
df.groupby('ID')['ORDER'].apply(lambda x: x.astype(int).sum())
ID
abc 1
bcd 4
ced 2
dfd 1
Name: ORDER, dtype: int64