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

如何在pandas DataFrame中按列值删除连续重复行(仅保留一行)

解决连续重复行的保留问题

你需要的是仅去除连续重复的行,而非全局去重,drop_duplicates因为是全局范围去重,所以会删掉后续出现的非连续重复值(比如行5的cat),这显然不符合需求。

具体实现代码

首先构造示例DataFrame:

import pandas as pd

data = {
    'Column1': ['cat', 'cat', 'cat', 'dog', 'dog', 'cat'],
    'Column2': ['A', 'B', 'C', 'D', 'E', 'F']
}
df = pd.DataFrame(data)

然后用shift()方法对比当前行与前一行的Column1值,筛选出非连续重复的行:

# 筛选条件:当前行Column1与前一行不同,或者是第一行(避免第一行被误删)
filtered_df = df[(df['Column1'] != df['Column1'].shift()) | (df.index == 0)]

执行后得到的结果就是你要的:

Column1 Column2
0     cat       A
3     dog       D
5     cat       F

原理说明

  • df['Column1'].shift()会把Column1的所有值向下偏移一行,第一行变为NaN
  • 通过df['Column1'] != df['Column1'].shift()可以找出所有与前一行值不同的行
  • 加上df.index == 0的条件,确保第一行无论如何都会被保留(因为NaN和任何值比较结果都是False,不加这个条件第一行会被过滤掉)

内容的提问来源于stack exchange,提问作者D. Schreiber

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:01:46