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

如何在Pandas中按col_a分组后筛选每组col_b最大值对应的行?

问题分析

你之前的代码错误地将col_a和col_b同时作为分组键,这会让每个(col_a, col_b)组合单独成为一组,自然会返回所有col_b的值,完全不符合“按col_a分组,提取每组内col_b最大的行”的需求。


解决方案

以下是三种可行的实现方式,注意:如果col_b是字符串类型(如示例中的"01"),直接比较字典序即可匹配数值大小;若实际场景中col_b的字符串格式不满足字典序等于数值序(比如"10"和"2"),需先执行df['col_b'] = df['col_b'].astype(int)转换为数值类型再操作。

方法1:groupby + transform 筛选

先按col_a分组计算每组col_b的最大值,再筛选出col_b等于该最大值的行:

max_b_per_a = df.groupby('col_a')['col_b'].transform('max')
result = df[df['col_b'] == max_b_per_a]

方法2:groupby + idxmax 提取行索引

通过idxmax获取每组col_b最大值对应的行索引,再用loc提取目标行:

idx = df.groupby('col_a')['col_b'].idxmax()
result = df.loc[idx]

方法3:排序后去重

先按col_a升序、col_b降序排序,再保留每个col_a的第一行:

result = df.sort_values(['col_a', 'col_b'], ascending=[True, False]).drop_duplicates('col_a')

以上三种方法都能得到你需要的结果:

col_acol_bcol_c
104425
20356
302567

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 13:54:54