我们如何基于一列对数据帧进行分组,如何基于另一列生成值(例如均值),最后对它们进行排序,以使整体分组基于均值(降序)进行排序,并在基于均值进行分组的组内进行排序(降序),但是对于相等的值,则基于第一个按列分组的字母(升序)排序? 例如:假设我们有一个参与者姓名及其在不同活动中的得分的数据框。我想首先按参与者名称分组,生成分数的平均值。将该组基于平均值降序排列。对于平均值相等的情况,请根据其名称升序排列。
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
按名称对输出进行排序会影响基于分数的排序。我在做什么错了?
答案 0 :(得分:0)
尝试一下:
df['mean_score'] = df.groupby('name').score.mean().reset_index(drop=True)
df.sort_values(by=['mean_score'])