Pandas分组调用mean()报错,求批量计算数值列均值的方法
解决Pandas分组批量计算数值列均值的问题
问题原因分析
- 执行
df.groupby(['Type 1']).mean()报错,是因为数据集中存在字符串类型列(如Name、Type 2等),mean()方法会尝试对所有列计算均值,字符串无法转换为数值导致失败。 - 执行
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
相关产品推荐
相关产品推荐

