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

如何修改Pandas的drop_duplicates以仅删除连续重复行?

如何在Pandas中仅删除DataFrame的连续重复行?

你需要删除DataFrame中的连续重复行(而非所有重复行),示例输入和期望输出如下:

输入DataFrame:

A headerAnother header
Firstel1
Secondel2
Secondel8
Firstel3
Secondel4
Secondel5
Firstel6
Secondel9

期望输出:

A headerAnother header
Firstel1
Secondel2
Firstel3
Secondel4
Firstel6
Secondel9

之前用循环实现的方案效率较低,推荐使用Pandas原生的向量化操作来解决:

解决方案代码:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'A header': ['First', 'Second', 'Second', 'First', 'Second', 'Second', 'First', 'Second'],
    'Another header': ['el1', 'el2', 'el8', 'el3', 'el4', 'el5', 'el6', 'el9']
})

# 筛选出与上一行不重复的行
filtered_df = df[df.ne(df.shift()).any(axis=1)]

print(filtered_df)

代码说明:

  • df.shift():将DataFrame的行整体下移一行,第一行填充为NaN
  • df.ne(df.shift()):逐元素对比原DataFrame和下移后的DataFrame,值不同则返回True,生成布尔矩阵
  • .any(axis=1):按行判断,只要该行有任意一列与上一行不同,就返回True
  • 最后用这个布尔序列筛选原DataFrame,即可得到仅保留非连续重复行的结果

这个方案基于Pandas的向量化运算,底层依赖numpy实现,比Python循环效率高一个数量级以上,尤其适合处理大规模数据集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:55:21