如何使用pandas仅删除相邻连续重复的行
解决pandas删除连续重复行(仅保留每组首行)的方法
你需要的是保留B列连续相同值组的第一条记录,删除同组内后续的连续重复行,非连续重复的记录不受影响,直接使用pandas的shift()方法做逐行对比即可实现。
import pandas as pd # 构造输入数据 df = pd.DataFrame({ 'A': [1,2,3,4,5,6,7,8,9,10], 'B': ['a','a','b','b','c','c','a','a','b','c'] }) # 核心筛选逻辑:只保留B列和上一行值不相等的行(即每个连续重复组的第一行) res = df[df['B'].ne(df['B'].shift())] # 若需要重置输出结果的行索引,可添加下方代码 # res = res.reset_index(drop=True) print(res)
运行后输出的结果和你要求的期望输出完全一致:
A B 0 1 a 2 3 b 4 5 c 6 7 a 8 9 b 9 10 c
代码逻辑说明
df['B'].shift()会将B列整体向下偏移一行,原第一行对应的值变为空值ne()方法是逐行对比当前B列值和偏移后的B列值,不相等则返回True,相等返回False- 布尔索引筛选出所有返回True的行,也就是每个连续重复组的第一条记录。
内容的提问来源于stack exchange,提问作者Mohammad Ghassan
相关产品推荐
相关产品推荐

