假设我有一个groupby对象(按Col1分组),如下所示:
Col1 Col2 Col3 Col4 Col5
----------------------------------------
AAA 001 456 846 239 row1
002 374 238 904 row2
003 456 846 239 row3
BBB 001 923 222 398 row1
002 923 222 398 row2
003 755 656 949 row3
CCC 001 324 454 565 row1
002 744 345 336 row2
003 567 355 756 row3
是否有一种方法来检查每个组中基于[Col3, Col4, Col5]的重复行。在上面的示例中,对于组AAA,第1行和第3行匹配,因为Col3、Col4、Col5值相同。同样在BBB组,第1行和第2行匹配。在CCC组中,使用上述逻辑,我们没有任何重复的行。
我们可以创建一个包含'n'布尔元素的列表(其中'n'表示组的数量),如果该组有任何重复,则将其填充为True,否则为False。因此,对于上面的示例,输出将是:
[True, True, False]
您可以尝试groupby
列Col1
,然后使用duplicated()
检查是否有任何从Col3
到Col5
的复制
out = (df.groupby('Col1')
.apply(lambda g: g[['Col3','Col4','Col5']].duplicated().any())
.tolist())
print(out)
[True, True, False]