我在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

然后你可以使用,groupbysum以前一样,除了你可以按两列值[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