我有一个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
布尔掩码加倍,最后用~
取反,并按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/