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

如何选取Pandas DataFrame最后一行数值最高的前n个列

最优实现方案

直接用pandas内置的nlargest方法即可,一行代码完成需求,性能和可读性都最优:

# 筛选最后一行数值最高的2个列
filtered_df = df[df.iloc[-1].nlargest(2).index]

代码说明

  • df.iloc[-1] 取DataFrame的最后一行
  • .nlargest(2) 取该行中数值最大的前2个元素,相比手动排序后切片的写法,不需要对所有列做全排序,时间复杂度更低,列数越多性能优势越明显。默认遇到并列值时保留先出现的列,可通过keep参数调整:
    • 传入keep='last' 并列时保留后出现的列
    • 传入keep='all' 保留所有满足前2大的列(如果有3个并列第2,会返回3列)
  • .index 取出前2大元素对应的列名,直接用列名索引筛选原DataFrame即可

可选优化:保留原列顺序

上面的写法返回的列会按最后一行数值从大到小排序(示例中会返回c列在前、a列在后),如果需要保持和原DataFrame一致的列顺序,可以调整为:

top_cols = df.iloc[-1].nlargest(2).index
filtered_df = df[sorted(top_cols, key=df.columns.get_loc)]

运行结果

最终输出的filtered_df内容如下:

ac
13
46
79

内容的提问来源于stack exchange,提问作者Adler Müller

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:18:03