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

如何删除pandas DataFrame重复行,仅移除每组重复项中的最后一条记录

pandas删除重复行时仅移除每组最后一条的实现方案

pandas自带的drop_duplicates仅支持保留每组重复项的第一条或最后一条,要实现仅移除每组重复项的最后一条、保留其余所有记录,可以用以下两种方案:

方案1:利用duplicated方法筛选(性能更优)

核心逻辑是通过duplicated的参数组合直接筛选需要保留的行:

import pandas as pd

# 示例输入
X = pd.DataFrame({"col1": list('acbcaa')})

# 核心代码:保留重复组内非最后一条的行 + 无重复的唯一行
X = X[X.duplicated(keep='last') | ~X.duplicated(keep=False)]

运行后得到的结果和预期一致,X['col1']的值为['a','c','b','a']。
如果需要按指定多列判断重复,只需在duplicated中添加subset参数指定列名列表即可,例如按col1和col2两列判断重复:

X = X[X.duplicated(subset=['col1','col2'], keep='last') | ~X.duplicated(subset=['col1','col2'], keep=False)]

方案2:利用groupby分组截断(逻辑更直观)

对每个重复组单独处理,长度大于1的组移除最后一条,否则全保留:

X = X.groupby('col1', group_keys=False).apply(lambda g: g.iloc[:-1] if len(g) > 1 else g)

多列判断重复时,把groupby的参数替换为列名列表即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:15:01