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

如何获取DataFrame每行最大值对应的所有列名列表

实现方法

核心逻辑是逐行匹配所有等于该行最大值的单元格,收集对应的列名生成列表即可,代码可直接运行:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({'a':[12,34,98,26],'b':[12,87,98,12],'c':[11,23,43,1]})

# 计算每行最大值对应列名的列表
result = df.eq(df.max(axis=1), axis=0).apply(lambda x: df.columns[x].tolist(), axis=1)

代码逻辑说明

  • df.max(axis=1):按行维度计算每一行的最大值,返回行索引对齐的Series
  • df.eq(对比对象, axis=0):将原DataFrame中每个单元格和对应行的最大值做相等判断,返回同形状的布尔DataFrame,值等于行最大值的位置标记为True,其余为False
  • apply(..., axis=1):逐行遍历布尔判断结果,提取值为True位置对应的列名,转换为列表格式

运行后得到的result输出和需求完全一致:

0    [a, b]
1       [b]
2    [a, b]
3       [a]
dtype: object

如果需要得到标准DataFrame格式,只需要对结果做一层转换即可:

new_df = result.to_frame(name='max_cols')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:12:58