如何用Pandas获取各数值列均值最大的Type 1分组名称?
解决方法
直接用Pandas的idxmax()方法就能搞定,这是最简洁的实现方式,步骤如下:
- 加载数据并计算分组均值(和你已实现的部分衔接)
import pandas as pd # 加载Pokemon数据集(替换成你的文件路径) df = pd.read_csv('pokemon.csv') # 指定需要计算的数值列 numeric_cols = ['Total', 'HP', 'Attack', 'Defense', 'Sp. Atk', 'Sp. Def', 'Speed'] # 按Type 1分组,计算各数值列的均值 grouped_means = df.groupby('Type 1')[numeric_cols].mean()
- 获取每个数值列均值最大的分组名称
idxmax()方法会返回每一列最大值对应的行索引(这里的行索引就是Type 1的分组名称),一行代码就能得到结果:
max_mean_groups = grouped_means.idxmax()
打印结果示例:
Total Dragon HP Dragon Attack Dragon Defense Steel Sp. Atk Dragon Sp. Def Steel Speed Electric dtype: object
- (可选)同时展示最大均值数值和对应分组
如果想把最大均值和分组名称放在一起看,用concat合并结果:
# 合并最大均值和对应分组 result = pd.concat([grouped_means.max(), grouped_means.idxmax()], axis=1) # 设置列名更直观 result.columns = ['最大均值', '对应Type 1分组'] print(result)
输出示例:
最大均值 对应Type 1分组 Total 550.53 Dragon HP 106.67 Dragon Attack 134.88 Dragon Defense 126.38 Steel Sp. Atk 120.53 Dragon Sp. Def 110.14 Steel Speed 93.50 Electric
关键说明
groupby('Type 1')之后,grouped_means的行索引是所有Type 1的分组,列是你指定的数值列。idxmax()针对每一列,找到该列最大值所在的行索引,也就是均值最大的那个Type 1分组名称,完美匹配你的需求。
内容的提问来源于stack exchange,提问作者MathsUndergrad
相关产品推荐
相关产品推荐

