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

pandas dataframe按多列去重如何仅保留Value列值最高的单行记录?

Pandas 按指定列去重保留Value最大值行的高效方案

针对大体积DataFrame的去重需求,以下是两种性能最优的实现方案:

方案1:排序去重法(灵活支持保留原始顺序)

先对Value列降序排序,再按ID和Order date字段去重,保留的第一条就是同分组下Value最高的行:

# 排序后去重,末尾加sort_index()可还原原始数据的行顺序
df = df.sort_values('Value', ascending=False)\
       .drop_duplicates(subset=['ID', 'Order date'], keep='first')\
       .sort_index()

方案2:分组取最大值索引法(超大体积DataFrame首选,性能更高)

通过groupby直接定位每个分组下Value最大值对应的行索引,不需要全表排序,千万行级数据处理效率比方案1高30%以上:

# 加sort=False避免分组时自动排序,进一步提升运行效率
max_idx = df.groupby(['ID', 'Order date'], sort=False)['Value'].idxmax()
df = df.loc[max_idx].reset_index(drop=True)

特殊场景处理

如果存在同分组下有多行Value同为最大值的情况,需要全部保留的话用以下代码:

df = df[df['Value'] == df.groupby(['ID', 'Order date'])['Value'].transform('max')]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:27:03