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

如何删除Pandas DataFrame指定列值与上一行相同的后续行

按指定列过滤相邻重复行

你可以通过shift()方法逐行对比指定列的取值,直接过滤掉和上一行指定列取值完全相同的行,实现方式如下:


原始测试数据

测试用DataFrame创建代码:

import pandas as pd

data = {'ID': [1,2,3,4,5,6,7],
        'feature1': [100,32,100,100,100,93,100],
        'feature2': [100,32,100,100,100,93,100],
        'feature3': [100,32,100,100,100,93,100],
        }
df = pd.DataFrame(data)

原始DataFrame打印结果:

ID  feature1  feature2  feature3
0   1       100       100       100
1   2        32        32        32
2   3       100       100       100
3   4       100       100       100
4   5       100       100       100
5   6        93        93        93
6   7       100       100       100

处理代码

# 定义需要判断重复的特征列
target_cols = ['feature1', 'feature2', 'feature3']
# 过滤保留和上一行目标列取值不完全相同的行,重置索引
df_result = df[~df[target_cols].eq(df[target_cols].shift()).all(axis=1)].reset_index(drop=True)

逻辑说明

  • df[target_cols].shift():将指定列的所有值向下偏移1行,每个位置存储原始数据上一行对应列的值
  • eq():逐元素对比当前行和上一行的列值是否相等,返回布尔值组成的DataFrame
  • .all(axis=1):按行判断三个列的对比结果是否全为True,即当前行三个列值和上一行完全一致
  • ~:对布尔结果取反,过滤掉和上一行完全重复的行;第一行偏移后为空值,不会被判定为重复,会自动保留

处理结果

打印df_result即可得到预期输出:

ID  feature1  feature2  feature3
0   1       100       100       100
1   2        32        32        32
2   3       100       100       100
3   6        93        93        93
4   7       100       100       100

索引3、4的相邻重复行已被删除,符合需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:39:18