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

Pandas使用groupby.max()取同ID苹果最高价格时返回错误位置如何解决

Pandas取分组内最大值对应完整行解决方案

方法1:使用idxmax直接定位最大值行(推荐)

通过groupby获取每个分组内Price列最大值对应的行索引,直接用loc提取完整行,代码简洁高效:

res = df.loc[df.groupby(['ID', 'Item'])['Price'].idxmax()]

方法2:排序后去重

先按Price降序排序,再按分组键去重,保留排序后的第一条记录(即价格最高的行),逻辑更直观易理解:

res = df.sort_values('Price', ascending=False).drop_duplicates(['ID', 'Item'], keep='first')

扩展:保留分组内所有最高价格对应的行

如果同一个分组下存在多条价格同为最大值的记录,可以用transform生成过滤掩码:

# 生成是否为分组内最高价的布尔掩码
max_price_filter = df['Price'] == df.groupby(['ID', 'Item'])['Price'].transform('max')
res = df[max_price_filter]

以上方法运行后均可得到正确结果:

IDItemPriceLocation
1Apple21001

内容的提问来源于stack exchange,提问作者i.d.s.chicago

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:18:03