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

DataFrame获取每行最大值对应列名报错,求解决方案

解决方法

错误原因

你用df.idxmax(axis=1)报错,是因为DataFrame里的目标列不是数值类型(比如是字符串格式的数字、或者包含非数值内容),idxmax依赖的argmax操作只支持数值型数据,所以触发了类型错误。

修复步骤

1. 将数据列转为数值类型

先把需要计算最大值的列转换成数值格式,用pd.to_numeric处理,遇到非数值内容可以强制转为NaN(后续可根据需求填充):

# 假设除了第一列(比如姓名列)外,其他都是需要计算的列
target_cols = df.columns[1:]
df[target_cols] = df[target_cols].apply(pd.to_numeric, errors='coerce')

2. 重新计算每行最大值对应的列名

转换完成后,再执行idxmax即可:

df['Max'] = df[target_cols].idxmax(axis=1)

可选:处理NaN值

如果转换后出现NaN,可以用fillna填充(比如填充0),避免影响最大值计算:

df[target_cols] = df[target_cols].fillna(0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 08:15:31