我有一个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

最佳答案

您可以先将BC进行比较,然后将shift布尔掩码加倍,最后用~取反,并按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/

10-12 17:04
查看更多