Pandas:格劳比和排序(升序和降序混合)

2024-07-05 14:32:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我们如何根据一列对数据帧进行分组,根据另一列生成值(比如说平均值),并最终对这些值进行排序,以便根据平均值(降序)对整体分组进行排序,并在根据平均值(降序)排序的组内进行排序,但是对于相等值,则根据第一列按字母顺序排序(升序)? 例如:假设我们有一个参与者姓名及其在不同活动中的分数的数据框架。我想首先按参与者姓名分组,生成分数的平均值。根据平均值对该组进行降序排序。对于平均值相等的情况,请根据其名称升序排序

DF: name task score User1 task1 3 User2 task2 8 User3 task3 7 User4 task4 7 User5 task5 8 User6 task6 8 User7 task7 2 User8 task8 7 User9 task9 6 User10 task10 1 User1 task11 5 User2 task12 7 User3 task13 1 User4 task14 8 User5 task15 0 User6 task16 2 User7 task17 8 User8 task18 1 User9 task19 3 User10 task20 4

Out: Name mean_score User2 7.5 User4 7.5 User6 5 User7 5 User9 4.5 User1 4 User3 4 User5 4 User8 4 User10 2.5

注:生成的平均分数按降序排序,对于等值用户名,按字母升序排序

我的代码:

top = df_tasks.groupby(['name'],as_index=False)['score'].mean().sort_values(by=['score'],axis=0,ascending=False,inplace=False)

给我以下信息:

name mean_score User2 7.5 User4 7.5 User7 5 User6 5 User9 4.5 User8 4 User3 4 User1 4 User5 4 User10 2.5

按名称对该输出进行排序会影响基于分数的排序。我做错了什么


Tags: 排序分数平均值scoreuser1user2降序user6