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

基于多列优先级的DataFrame排名列实现(含同分规则)

多条件排名实现方案

原始数据

import pandas as pd

df = pd.DataFrame({
    "DScore": [2, 2, 3, 4, 5],
    "EScore": [6, 7, 9, 9, 10],
    "Total Score": [17, 15, 15, 23, 25]
})

排名规则

  • 优先按Total Score降序排序排名
  • Total Score相同时,按EScore降序判断
  • EScore仍相同时,按DScore降序判断
  • 三者完全相同时,分配相同排名

预期输出

df = pd.DataFrame({
    "DScore": [2, 2, 4, 4, 5],
    "EScore": [6, 7, 9, 9, 10],
    "Total Score": [17, 15, 23, 23, 25],
    "Rank": [3,4,2,2,1]
})

实现代码

利用pandas的rank()方法,指定多列排序依据,设置降序和method='min'来保证相同值获得相同排名:

# 按规则排序(可选,用于对齐预期输出的行顺序)
df = df.sort_values(by=['Total Score', 'EScore', 'DScore'], ascending=False)

# 生成排名列并转为整数类型
df['Rank'] = df.rank(by=['Total Score', 'EScore', 'DScore'], ascending=False, method='min').astype(int)

# 查看最终结果
print(df)

执行后将得到与预期一致的排名结果:

  • Total Score=25的行排名第1
  • 两个Total Score=23的行共同排名第2
  • Total Score=17的行排名第3
  • Total Score=15的行排名第4

内容的提问来源于stack exchange,提问作者Michał Surdej

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 00:51:10