根据每组平均得分排名

时间:2021-06-08 19:35:32

标签: python pandas numpy

我有一个数据框:

  Group  Score
    1      3
    1      2
    2      3
    2      1
    3      0
    3      1
    4      1
    4      1

我想取每组的平均分,并根据平均分降序排列所有组。

我最初的想法是在group列上做groupby,求score列的平均值,但是我不确定接下来的步骤是什么

1 个答案:

答案 0 :(得分:1)

尝试使用 groupby transform 获得平均值,然后使用 rank

df['Rank'] = (
    df.groupby('Group')['Score']
        .transform('mean')
        .rank(method='dense', ascending=False)
        .astype(int)
)

df

   Group  Score  Rank
0      1      3     1
1      1      2     1
2      2      3     2
3      2      1     2
4      3      0     4
5      3      1     4
6      4      1     3
7      4      1     3
相关问题