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

Pandas对DataFrame分组后求horsepower列均值报错,min/max正常如何解决

问题原因

报错DataError: No numeric types to aggregate的根本原因是horsepower列的数据类型为字符串(object)类型,不支持数值类聚合运算:

  • auto_mpg公开数据集的horsepower列存在缺失值,原始数据用?字符填充,pandas默认读取时会将整列判定为object类型
  • min、max聚合支持对字符串类型执行(按字符编码比较大小),因此你之前的代码可以正常运行;但mean属于数值运算,无法对字符串类型的列执行,因此抛出异常。

你可以先执行print(df['horsepower'].dtype)查看列的类型,确认是否为object类型验证上述判断。

解决步骤
  1. 读取数据时直接识别异常填充值为空值
import pandas as pd
df = pd.read_csv('auto_mpg.csv', na_values='?')
  1. 显式将horsepower列转换为数值类型,转换失败的值自动设为空值
df['horsepower'] = pd.to_numeric(df['horsepower'], errors='coerce')
  1. 执行原有的分组聚合逻辑即可正常得到均值结果
df.groupby(['cylinders','model year']).agg({'horsepower':'mean'})

内容的提问来源于stack exchange,提问作者Md Firdaus Alam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:24:04