如果两列的值不同,则删除连续的两行[Pandas]

2024-03-29 07:11:07 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: df步骤bewillrowstwo行李deleted
1条回答
网友
1楼 · 发布于 2024-03-29 07:11:07

您可以先将BC进行比较,然后使用双^{}布尔掩码,最后使用~进行反转,并按^{}进行过滤:

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

相关问题 更多 >