python - 根据每组平均分排名
问题描述
我有一个数据框:
Group Score
1 3
1 2
2 3
2 1
3 0
3 1
4 1
4 1
我想取每个组的平均分数,并根据平均分数按降序排列所有组。
我最初的想法是在 group 列上做 groupby 并找到 score 列的平均值,但我不确定接下来的步骤是什么
解决方案
然后尝试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
推荐阅读
- sql - 通过 Devops 执行/部署 SQL 脚本到 sql server。有哪些可能的选择?
- c# - 当 San 与 CN 不匹配时,AuthenticateAsClient 在 ValidateServerCertificate 中给出 RemoteCertificateNameMismatch
- javascript - Vue JS通过对象内的动态键访问对象
- python - 熊猫从行中删除重复项
- html - 在所有浏览器 MVC 上的数据库中播放 HTML 视图上的视频/音频
- snowflake-cloud-data-platform - 如何将 json 文件的键名放入雪花中的数组中?
- python - RuntimeError:cuDNN 错误:Torch 中的反向传递中的 CUDNN_STATUS_NOT_INITIALIZED
- javascript - 将信息发送到数据库的按钮
- python - 取消堆叠数据帧会导致内存错误
- java - Kodein Scopes,将数据库服务绑定到活动生命周期