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

