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

使用Pandas idxmax()函数触发TypeError报错的技术问询

解决Pandas idxmax()触发TypeError的问题

你在Pandas 0.22.0版本里遇到的这个TypeError,核心原因很直接:你的'Mean recall score'列不是数值型数据,而idxmax()(底层依赖argmax操作)只支持对数值型列执行这个计算。

下面是一步步的解决流程:

  • 第一步:先确认列的数据类型
    先搞清楚问题根源,运行这条代码查看列的类型:

    print(results['Mean recall score'].dtype)
    

    如果输出是object,说明这列大概率混了非数值内容——比如带格式的字符串、文本注释,或者是存储为字符串的数字。

  • 第二步:将列转换为数值类型
    用pd.to_numeric()把列转成数值格式,同时处理转换失败的情况(把无效值转为NaN):

    results['Mean recall score'] = pd.to_numeric(results['Mean recall score'], errors='coerce')
    

    errors='coerce'参数会把无法转成数字的内容变成NaN,避免这些无效值打断后续操作。

  • 第三步:处理NaN值(可选但推荐)
    转换后如果出现NaN,你可以选择删除包含NaN的行,或者用合理值填充:
    删除含NaN的行:

    results = results.dropna(subset=['Mean recall score'])
    

    用列均值填充NaN:

    results['Mean recall score'] = results['Mean recall score'].fillna(results['Mean recall score'].mean())
    
  • 第四步:重新执行你的代码
    现在'Mean recall score'已经是数值型了,再运行原来的代码就不会报错:

    best_c_param = results.loc[results['Mean recall score'].idxmax()]['C_parameter']
    

额外提一句:Pandas 0.22.0是2018年的旧版本了,如果环境允许,升级到1.x或2.x的新版本会获得更好的类型兼容性和功能支持,但如果不能升级,上面的步骤完全可以解决当前问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:30:33