Pandas按聚合函数分组:如何获取平均薪资最高的职业
解决方法
你可以通过以下几种方式获取最高平均薪资对应的职业名称:
方法一:使用idxmax()直接获取
先计算各职业平均薪资,然后用idxmax()拿到对应职业名称,max()拿到薪资数值:
# 计算各职业平均薪资,得到Series(Occupation为索引,Salary均值为值) occupation_salary_mean = df.groupby('Occupation')['Salary'].mean() # 获取最高平均薪资的职业名称 top_occupation = occupation_salary_mean.idxmax() # 获取对应的最高平均薪资数值 max_avg_salary = occupation_salary_mean.max() print(f"平均薪资最高的职业:{top_occupation},薪资:{max_avg_salary}")
方法二:排序后取首行
对计算出的平均薪资降序排序,取第一行即可同时拿到职业和薪资:
# 计算并排序,取第一行 top_occupation_info = df.groupby('Occupation')['Salary'].mean().sort_values(ascending=False).head(1) # 提取职业名称和薪资 top_occupation = top_occupation_info.index[0] max_avg_salary = top_occupation_info.values[0] print(f"平均薪资最高的职业:{top_occupation},薪资:{max_avg_salary}")
补充说明
你之前的代码执行后,Occupation会变成结果的索引而非普通列,所以只看数值时看不到对应的职业名称。上面的两种方法都是通过操作索引或排序来关联数值和职业名称。
内容的提问来源于stack exchange,提问作者kristinek
相关产品推荐
相关产品推荐

