I applied sum() on a groupby and I want to sort the values of the last column

前端 未结 2 985
名媛妹妹
名媛妹妹 2021-01-14 03:17

Given the following DataFrame

user_ID  product_id  amount
   1       456          1
   1        87          1
   1       788          3
   1       456                


        
2条回答
  •  轻奢々
    轻奢々 (楼主)
    2021-01-14 04:18

    Suppose df is:

         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
    

    Then you can use, groupby and sum as before, in addition you can sort values by two columns [user_ID, amount] and ascending=[True,False] refers ascending order of user and for each user descending order of amount:

    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)
    

    Output:

         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
    

提交回复
热议问题