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

如何提取pandas DataFrame每行前两大值对应的列名并新增存储列

实现代码

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'AA': [1, 5, 9],
    'BB': [12, 7, 7],
    'CC': [4, 28, 9],
    'DD': [3, 7, 2],
    'EE': [5, 4, 6]
})

# 定义行处理逻辑:取每行前两大值对应的所有列名
def fetch_top2_cols(row):
    # 取当前行去重后的数值,降序排序取前2个作为阈值
    top2_unique_values = sorted(row.unique(), reverse=True)[:2]
    # 筛选所有值属于前两大阈值的列名,默认按原列顺序返回
    return [col for col, val in row.items() if val in top2_unique_values]

# 应用函数到每行,生成MM列
df['MM'] = df.apply(fetch_top2_cols, axis=1)

# 输出结果验证
print(df)

逻辑说明

核心逻辑是对每行做单独处理:

  • 先提取当前行的所有数值,去重后从大到小排序,取前2个值作为入选阈值
  • 遍历当前行的所有列,只要列值属于这两个阈值,就将列名加入结果列表
  • 列表默认保持原DataFrame的列顺序,如果需要调整同值列的排序规则,可以在返回列表前增加自定义排序逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:45:06