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

基于DataFrame两列最大值生成对应列名新列的实现方法

实现方案

可以直接用Pandas自带的idxmax方法完成需求,该方法会返回指定轴上最大值对应的索引名,按行计算时就能直接得到最大值对应的列名。

完整代码示例

首先构造测试用DataFrame:

import pandas as pd

df = pd.DataFrame([
    ['A', 1, 0],
    ['B', 2, 3],
    ['C', 0, 4],
    ['D', 3, 2]
], columns=['Col1', 'Val1', 'Val2'])

新增Type列的核心代码:

# axis=1表示按行计算,仅针对Val1、Val2两列做判断
df['Type'] = df[['Val1', 'Val2']].idxmax(axis=1)

特殊场景处理

如果存在Val1和Val2数值相等的情况,idxmax默认会取排序在前的列(也就是Val1)。如果需要自定义相等时的返回值,可以用numpy.where实现自定义逻辑:

import numpy as np
# 示例:相等时返回Val2的写法
df['Type'] = np.where(df['Val1'] > df['Val2'], 'Val1', 
                      np.where(df['Val1'] < df['Val2'], 'Val2', 'Val2'))

执行后得到的DataFrame和你需要的输出结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:39:01