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

使用pandas groupby.mean()报错NotImplementedError的技术问询

Pandas分组计算公司平均销售额报错解决

问题场景

数据框结构如下:

Company  Person   Sales
0  GOOG     Sam      200
1  GOOG     Charlie  120
2  MSFT     Amy      340
3  MSFT     Vanessa  124
4  FB       Carl     243
5  FB       Sarah    350

使用的代码:

data = {'Company': ['GOOG','GOOG','MSFT','MSFT','FB','FB'],
        'Person': ['Sam','Charlie','Amy','Vanessa','Carl','Sarah'],
        'Sales': [200,120,340,124,243,350]}

df = pd.DataFrame(data)

byComp = df.groupby('Company')

byComp.mean()

运行后抛出错误:

NotImplementedError: function is not implemented for this dtype: [how->mean,dtype->object]
...
TypeError: Could not convert CarlSarah to numeric

报错原因

新版本Pandas中groupby.mean()的numeric_only参数默认值发生变更,旧版本默认仅对数值型列计算均值,新版本会尝试对所有列(包括Person这类object类型的文本列)计算均值,而文本列无法转换为数值类型,因此触发报错。

解决方案

有两种可行的解决方式:

  • 方式一:指定numeric_only=True参数
    调用mean()时明确限定只计算数值型列的均值:

    byComp.mean(numeric_only=True)
    
  • 方式二:先筛选数值型列再分组计算
    直接选择Sales列(或所有数值列)后再执行分组计算:

    df.groupby('Company')['Sales'].mean()
    

两种方式都能得到正确的各公司平均销售额结果:

Company
FB      296.5
GOOG    160.0
MSFT    232.0
Name: Sales, dtype: float64

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:22:32