使用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
相关产品推荐
相关产品推荐

