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

Python实现多分组取最高值:按年代分组求对应姓名最高薪资

报错原因

你编写的代码报错是因为 groupby() 执行后返回的是GroupBy分组对象,不是DataFrame结构,无法直接调用reset_index(),且你没有指定分组后取每组最高薪资对应记录的逻辑,缺少关键步骤。

正确实现代码

提供两种常用实现方案:

方案1:基于排序取分组首行(匹配你原来的实现思路)

# 先按薪资降序排序,按Bins分组后取每组第一条,再按年代排序重置索引
result = df.sort_values(by='Salary', ascending=False)\
           .groupby('Bins', as_index=False)\
           .head(1)\
           .sort_values('Bins')\
           .reset_index(drop=True)

方案2:基于最大值索引提取(性能更高,无需全表排序)

# 先取每个Bins分组下薪资最大值对应的行索引,直接提取对应行后排序重置索引
result = df.loc[df.groupby('Bins')['Salary'].idxmax()]\
           .sort_values('Bins')\
           .reset_index(drop=True)

两种方案执行后输出的result都和你期望的结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:24:07