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

Pandas分组调用mean()报错,求批量计算数值列均值的方法

解决Pandas分组批量计算数值列均值的问题

问题原因分析

  1. 执行df.groupby(['Type 1']).mean()报错,是因为数据集中存在字符串类型列(如Name、Type 2等),mean()方法会尝试对所有列计算均值,字符串无法转换为数值导致失败。
  2. 执行df[['HP','Attack','Defense']].groupby(['Type 1']).mean()报KeyError: 'Type 1',是因为筛选列时只保留了数值列,排除了分组依据列Type 1,分组时找不到该列。

高效解决方案

要批量计算所有数值列的均值,无需逐个指定列,可通过以下两种简洁方式实现:

方式1:先筛选数值列,再结合分组列进行聚合

# 提取所有数值类型的列名
numeric_columns = df.select_dtypes(include=['int64', 'float64']).columns.tolist()
# 保留分组列+数值列,再分组计算均值
result = df[['Type 1'] + numeric_columns].groupby(['Type 1']).mean()
print(result)

方式2:分组后直接指定对数值列应用均值计算

numeric_columns = df.select_dtypes(include=['number']).columns.tolist()
# 分组后仅对数值列执行mean()
result = df.groupby(['Type 1'])[numeric_columns].mean()
print(result)

补充说明

select_dtypes(include=['number'])会自动匹配所有数值类型列(整数、浮点数),无需手动枚举,适配数据集结构变化。如果需要排除特定数值列,可在numeric_columns中移除对应列名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 16:18:10