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

Pandas按ColA分组后优先取Result、Freq最大值的实现问题

解决方法

你之前使用groupby().max()无法得到预期结果的原因是:该方法会对分组内的每一列单独计算最大值,而非提取符合多列优先级条件的完整行,比如ColB列会返回分组内字符串排序最大的值,和Result、Freq最大值对应的行没有关联。

你可以使用以下两种方式实现需求:

方法1:排序后分组取首行

先按照优先级对全表降序排序,再按COlA分组取每组第一行即可:

# 按Result降序、Freq降序排序,优先级高的规则排在前面
df_sorted = df.sort_values(by=['Result', 'Freq'], ascending=[False, False])
# 分组取每组首行,重置索引
res = df_sorted.groupby('COlA').head(1).reset_index(drop=True)

方法2:分组内直接取符合优先级的最大行

用groupby.apply配合nlargest直接在分组内按多列优先级取行:

res = df.groupby('COlA', group_keys=False).apply(
    lambda x: x.nlargest(1, columns=['Result', 'Freq'])
).reset_index(drop=True)

两种方法都可以得到你需要的预期输出。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:24:00