我在groupby上应用了sum(),我想对最后一列的值进行排序
问题内容:
给定以下DataFrame
user_ID product_id amount
1 456 1
1 87 1
1 788 3
1 456 5
1 87 2
... ... ...
第一列是客户的ID,第二列是他购买的产品的ID,如果在给定日期(还考虑了日期)购买的产品数量,则为“金额”。客户每天可以购买任意数量的商品。我想计算客户购买每种产品的总次数,因此我应用了groupby
df.groupby(['user_id','product_id'], sort=True).sum()
现在,我想对每组中金额的总和进行排序。有什么帮助吗?
问题答案:
假设df
是:
user_ID product_id amount
0 1 456 1
1 1 87 1
2 1 788 3
3 1 456 5
4 1 87 2
5 2 456 1
6 2 788 3
7 2 456 5
然后你可以使用,groupby
和sum
以前一样,除了你可以按两列值[user_ID, amount]
,并ascending=[True,False]
指用户和总额的每个用户降序升序:
new_df = df.groupby(['user_ID','product_id'], sort=True).sum().reset_index()
new_df = new_df.sort_values(by = ['user_ID', 'amount'], ascending=[True,False])
print(new_df)
输出:
user_ID product_id amount
1 1 456 6
0 1 87 3
2 1 788 3
3 2 456 6
4 2 788 3