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

Python如何获取pandas DataFrame每行最大值对应的列序号

Python Pandas 获取每行最大值对应列序号的最优方案

核心实现

直接使用pandas内置向量化操作,全程无循环,性能最优,支持处理超大规模数据集:

import pandas as pd

# 假设你的DataFrame变量名为df
res = (
    # 第一步:排除不需要的日期列,仅保留数值列
    df.drop("Date", axis=1)
    # 第二步:转numpy数组按行取第一个最大值的索引(默认从0开始计数),加1转为1开始的序号
    .to_numpy()
    .argmax(axis=1) + 1
    # 第三步:转为列表格式得到结果
).tolist()

效果验证

用你给出的示例数据测试:

# 构造示例数据
data = {
    "Date": ["01.01.2020", "02.01.2020", "03.01.2020", "02.01.2020"],
    "Company 1": [23, 22, 11, 2],
    "Company 2": [21, 12, 11, 14],
    "Company 3": [14, 22, 12, 3]
}
df = pd.DataFrame(data)

# 执行代码
print(res)

输出结果为:[1, 1, 3, 2],与期望结果完全匹配。

特殊场景适配

如果你的数据中存在空值NaN,请使用以下兼容版本,自动跳过空值取最大值:

res = (
    df.drop("Date", axis=1)
    # 按行取第一个最大值对应的列名,自动跳过NaN
    .idxmax(axis=1, skipna=True)
    # 把列名转为1开始的列序号,不依赖列名规则
    .apply(lambda col: df.drop("Date", axis=1).columns.get_loc(col) + 1)
).tolist()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:15:05