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

如何在Pandas DataFrame中对多行列范围内的数值计算全局排名

实现方案

核心思路是先把需要参与全局排名的所有列的数值展平为一维结构,计算完全局排名后再恢复为原DataFrame的行列结构,最后合并到原表中即可。

示例代码

import pandas as pd

# 1. 构造示例DataFrame
df = pd.DataFrame(
    data=[[60, 20, 10], [40, 30, 80], [70, 50, 50]],
    index=['Row1', 'Row2', 'Row3'],
    columns=['Column1', 'Column2', 'Column3']
)

# 2. 定义需要参与全局排名的列(实际使用时替换为对应列名即可)
rank_target_cols = ['Column1', 'Column2', 'Column3']

# 3. 展平选中列计算全局排名,再恢复原结构
rank_result = df[rank_target_cols].stack()\
                .rank(ascending=False, method='min')\
                .unstack()

# 4. 重命名排名字段并合并回原表
rank_result.columns = [f"{col}_rank" for col in rank_result.columns]
df = pd.concat([df, rank_result], axis=1)

# 输出结果
print(df)

参数说明

rank方法的两个核心参数可以根据实际需求调整:

  • ascending:控制排名顺序,False为降序(数值越大排名越靠前,和示例规则一致),True为升序
  • method:控制重复值的排名规则,常用取值:
    • min:重复值取最小排名(和示例规则一致,比如两个并列第4的50,下一个数值排名为6)
    • average:重复值取平均排名
    • first:按值出现的先后顺序排名,相同值不会并列
    • max:重复值取最大排名

运行上述代码输出的结果和期望输出完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:09:03