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

如何在Pandas分组后保留全列并获取pct最大值对应行

分组保留每组pct最大值的完整行方法

下面是几种实现需求的实用方法:

方法一:排序后去重

先按objectid分组,再按pct降序排序,最后保留每个objectid的第一行(即pct最大的行):

result = df.sort_values(['objectid', 'pct'], ascending=[True, False]) \
           .drop_duplicates(subset='objectid', keep='first')
  • 特点:操作简单直观,默认只保留每组第一个pct最大值的行。

方法二:利用idxmax获取索引

先找到每组pct最大值对应的行索引,再通过索引提取完整行:

max_idx = df.groupby('objectid')['pct'].idxmax()
result = df.loc[max_idx].reset_index(drop=True)
  • 特点:直接定位目标行,效率较高;若组内存在多个pct相同的最大值,仅保留第一个出现的行。

方法三:保留所有pct最大值的行

如果需要保留每组中所有pct等于最大值的行,可使用transform广播组内最大值后筛选:

df['max_pct_in_group'] = df.groupby('objectid')['pct'].transform('max')
result = df[df['pct'] == df['max_pct_in_group']].drop(columns='max_pct_in_group')
  • 特点:能捕获组内所有pct达到最大值的行,适合存在并列最大值的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 09:44:53