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

如何在DataFrame中删除与上一行列值互换的当前行

Pandas 相邻互换值行删除实现方案

核心逻辑无需逐行遍历,借助pandas内置的移位方法shift()做向量化判断即可,性能远高于逐行循环写法。

实现步骤

  • 用shift(1)获取每一行对应的上一行的列取值
  • 构造布尔掩码,标记所有同时满足两个删除条件的行
  • 过滤掉标记为待删除的行,得到最终结果

完整代码

import pandas as pd

# 构造示例原始数据集
df = pd.DataFrame({
    'Column1': ['A', 'B', 'A', 'A', 'D', 'B'],
    'Column2': ['B', 'A', 'C', 'D', 'A', 'C']
})

# 构造待删除行的判断掩码
drop_condition = (
    (df['Column1'] == df['Column2'].shift(1))
    & (df['Column2'] == df['Column1'].shift(1))
)

# 过滤待删除行,重置索引(可选)
df_clean = df[~drop_condition].reset_index(drop=True)

结果验证

运行后打印df_clean输出完全匹配预期结果:

Column1 Column2
0       A       B
1       A       C
2       A       D
3       B       C

说明

  • 首行不存在上一行,shift()取值为NaN,判断结果自动为False,不会被误删,无需额外做边界处理
  • 该实现为向量化运算,十万级以上数据量场景下性能远高于iterrows()、itertuples()等逐行遍历写法
  • 该逻辑严格匹配「仅和紧邻上一行做值互换校验」的需求,如果需要全局匹配所有存在值互换的行(不限相邻),需要额外调整判断逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:21:29