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

如何对DataFrame最后一行元素按对应列整体采用min排名法生成排名列表

解决DataFrame最后一行元素按列'min'排名的问题

嘿,这个需求其实用pandas自带的rank()方法就能完美搞定,我来给你拆解一下具体步骤:

核心思路

我们需要对DataFrame的每一列单独做排名(采用min规则),然后提取最后一行对应的排名值,转成列表即可。这里要注意排名的顺序——从你的示例来看,是降序排名(数值越大排名越靠前),这样才能得到你要的[3,3,2,1]结果。

完整代码实现

import pandas as pd

# 创建示例DataFrame
df = [[10, 2, 8, 4], [12, 6, 4, 1], [8, 4, 3, 2], [9, 3, 4, 6]]
df = pd.DataFrame(df)

# 1. 对每一列执行min规则的降序排名
# 2. 提取最后一行的排名结果
# 3. 转成整数列表
rank_result = df.rank(method='min', ascending=False).iloc[-1].astype(int).tolist()

print(rank_result)  # 输出: [3, 3, 2, 1]

代码解释

  • df.rank(method='min', ascending=False):
    • method='min':当列中有相同数值时,给它们分配相同的最小排名(比如示例第2列的两个4,都会被排在第2位)。
    • ascending=False:按降序排名,数值越大排名越靠前(对应示例中第0列的9,在[10,12,8,9]里排第3位)。
  • .iloc[-1]:获取排名结果的最后一行,也就是原DataFrame最后一行元素对应的排名。
  • .astype(int).tolist():把浮点型的排名结果转成整数,再转换成列表格式。

验证示例

运行上面的代码后,输出正好是你预期的[3, 3, 2, 1],完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 19:27:28