python - 如果两列具有不同的值,则删除连续的 2 行 [Panda]

标签 python pandas numpy

我有一个 df 如下:

A    B    C
45   0    0
40   0    1    
43   1    1
49   1    1
45   1    1
40   1    0
43   0    0
47   0    0
48   0    0
51   0    0

我想迭代 df,检查 A 列和 B 列。

  1. 如果 A==B,则删除接下来的两行。
  2. 重复步骤 1 直到 df 的长度。

最终输出应该如下所示。

A    B    C
45   0    0
40   0    1 (two successive rows will be deleted)
45   1    1
40   1    0 (two successive rows will be deleted)
48   0    0
51   0    0

最佳答案

您可以先将BC进行比较,然后将shift加倍。 bool 掩码,最后用 ~ 反转并按 boolean indexing 过滤:

m = df['B'] != df['C']
df = df[~(m.shift(1) | m.shift(2))]
print (df)
    A  B  C
0  45  0  0
1  40  0  1
4  45  1  1
5  40  1  0
8  48  0  0
9  51  0  0

关于python - 如果两列具有不同的值,则删除连续的 2 行 [Panda],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47525011/

相关文章:

python - opencv python whie加载视频时出错

python - 取消注释 `if False: yield` 更改 `__iter__` 行为

python - 是否可以在 matplotlib 中为边缘颜色分配颜色图?

python - 数据框将数据移动到随机列中?

python - 纠正 pandas 索引的排序顺序

python - 替换 numpy 数组列表中的值

python - 在列表中使用切片 numpy 对象

python - 找到图上点之间的最长公共(public)间隔

python - 如何在OpenAI的Answer api中使用文件

python - pandas:使用正则表达式验证数据框单元格