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

Pandas groupby取最大值后如何追加原DataFrame对应lp_id列值

实现方案

方案1:一步提取分组最大值对应完整行(推荐)

不需要先单独计算最大值再合并,直接通过idxmax()获取每个分组内pct_access最大值对应的行索引,取出原表整行数据即可直接得到包含lp_id的完整结果:

df_engage_max = df_engage.loc[df_engage.groupby(['district_id', 'time'])['pct_access'].idxmax()].reset_index(drop=True)

该方案默认每个分组仅返回第一个出现的最大值对应的行,适合单分组内最大值唯一的场景。

方案2:基于已有max表匹配追加lp_id

如果你已经生成了仅包含三列的df_engage_max,可以通过多字段左连接匹配原表的lp_id字段:

df_engage_max = df_engage_max.merge(
    df_engage[['district_id', 'time', 'pct_access', 'lp_id']],
    on = ['district_id', 'time', 'pct_access'],
    how = 'left'
)

注意:如果同一district_id+time分组下存在多个行的pct_access同为最大值,合并后会返回所有对应lp_id的行,若只需保留一条,可在合并后追加.drop_duplicates(subset=['district_id', 'time'], keep='first')完成去重。

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

相关产品推荐
方舟 Agent Plan

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

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