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

Pandas执行pivot列转换时保留重复索引最后一条数据的实现方法

Pandas实现pivot保留最后一条记录的规范方案

Pandas原生pivot方法暂不支持keep参数,要实现重复索引+列分组下保留最后一条条目的需求,可通过分组取最后值+列展开的组合逻辑实现,完全符合Pandas开发规范:

核心实现代码

# 仅需在原有逻辑基础上替换pivot调用即可
pivot_keep_last = df.groupby([df.index, 'a']).last().unstack('a')

逻辑说明

  • groupby([df.index, 'a']):按行索引i和要转列的字段a做分组,相同i值、相同a取值的行会被分到同一组
  • .last():取每个分组的最后一条记录,对应需求中的keep='last'效果,如果需要保留第一条可替换为.first()
  • .unstack('a'):将a字段的不同取值展开为列层级,最终输出结构和df.pivot(columns='a')完全一致,且重复分组的条目仅保留最后一条

备选实现方案

如果更习惯先做数据去重再调用pivot,也可以使用如下写法,效果完全一致:

pivot_keep_last = df.reset_index()\
                    .drop_duplicates(subset=['i', 'a'], keep='last')\
                    .set_index('i')\
                    .pivot(columns='a')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:27:03