我有一个 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 列。
- 如果 A==B,则删除接下来的两行。
- 重复步骤 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
最佳答案
您可以先将B
与C
进行比较,然后将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/