You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas如何基于score列计算分组内排名并新增rank列

Pandas 实现分组内按分数排名

要实现按group分组、组内按score降序排名的需求,可直接参考以下代码:

完整可运行代码

import pandas as pd

# 构造示例数据,实际使用时替换为你自己的数据集读取逻辑即可
df = pd.DataFrame({
    'group': [1, 1, 1, 2, 2, 2, 3, 3, 3],
    'name': ['p2382', 'p9183', 'p1253', 'p3382', 'p5583', 'p1211', 'p0482', 'p7374', 'p2382'],
    'score': [7.55, 3.22, 5.77, 2.11, 1.22, 0.77, 8.55, 8.21, 7.77]
})

# 新增rank列:按group分组,组内score越高排名越靠前,排名转为整数格式
df['rank'] = df.groupby('group')['score'].rank(ascending=False, method='min').astype(int)

# 按group、rank升序排序,得到最终结果
df = df.sort_values(by=['group', 'rank'], ignore_index=True)

print(df)

参数说明

  • ascending=False:设置为降序排名,保证分数越高排名越靠前
  • method='min':相同分数的记录排名一致,如果你需要同分按出现顺序先后排名,可以替换为method='first'
  • astype(int):rank方法默认返回浮点型结果,转换为整数符合预期的排名展示格式

输出结果

运行后得到的df和你要求的预期结果完全一致:

groupnamescorerank
1p23827.551
1p12535.772
1p91833.223
2p33822.111
2p55831.222
2p12110.773
3p04828.551
3p73748.212
3p23827.773

内容的提问来源于stack exchange,提问作者Algorithmatic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 18:45:03