首页 > 解决方案 > 根据每组平均分排名

问题描述

我有一个数据框:

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

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

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

标签: pythonpandasnumpy

解决方案


然后尝试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

推荐阅读