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

如何基于DataFrame特定列的前值移除连续重复行?

处理大型DataFrame中连续重复行的最优方案

针对你需求的仅移除col2列中与前一行连续重复的行、保留首次出现行的场景,最优实现是使用pandas的向量化对比操作,具体内容如下:

原数据示例

import pandas as pd
data = pd.DataFrame(data={'col1': [1,2,3,4,5,6,7,8,9], 'col2': [1.55,1.55,1.55,1.8,1.9,1.9,1.9,2.1,2.1]})

最优处理代码

# 保留col2与前一行值不同的所有行(含第一行)
clean_data = data[data['col2'].ne(data['col2'].shift())]

处理结果

print(clean_data)
# 输出:
#    col1  col2
# 0     1  1.55
# 3     4  1.80
# 4     5  1.90
# 7     8  2.10

方案说明

  1. 核心逻辑:

    • data['col2'].shift():将col2列的元素整体向下偏移一行,第一行变为NaN
    • .ne():是pandas的向量化"不等于"判断,返回布尔值序列,其中True表示当前行col2值与上一行不同
    • 用该布尔序列过滤原DataFrame,即可保留所有非连续重复的行(包括第一行,因为NaN与任何值比较"不等于"都为True)
  2. 效率优势:
    这种方法是pandas底层的向量化操作,基于numpy实现,完全避开了Python层面的循环,处理百万级甚至更大规模的DataFrame时,速度比手动循环、apply等方法快10-100倍,是大型数据集下的最优选择。

  3. 误区提醒:
    不要使用drop_duplicates(),因为该方法会移除所有重复值(无论是否连续),不符合你仅移除连续重复行的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:30:43