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

Python pandas如何根据行最大值对应列名新增数据列

实现步骤

首先你需要先确认DataFrame的列名已经替换为对应保费调整幅度的业务文本,不要用Col1/Col2这类占位名称。如果是从csv/Excel读入的原始数据,先做表头处理:

import pandas as pd

# 假设df是你读入的原始数据,当前列名为Col1/Col2/Col3/Col4,第一行是实际业务列名
# 1. 替换列名为业务字段
df.columns = df.iloc[0]
# 2. 删除已用作表头的第一行数据
df = df.drop(0).reset_index(drop=True)
# 3. 把保费占比的列转换为float类型
price_adjust_cols = ['< -$100', '-$100 to -$90', '-$90 to -$80']
df[price_adjust_cols] = df[price_adjust_cols].astype(float)

之后直接用pandas内置的idxmax方法按行取最大值对应的列名即可:

# 新增列存储每行最大占比对应的保费调整区间
df['common_price_change'] = df[price_adjust_cols].idxmax(axis=1)

特殊情况处理

如果某行存在多个列的占比同为最大值,idxmax默认会返回第一个出现的列名。如果需要返回所有并列的最大值列,可以改用apply实现:

df['common_price_change'] = df[price_adjust_cols].apply(
    lambda row: ','.join(row[row == row.max()].index),
    axis=1
)

运行后得到的结果和你给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

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