检查 Pandas DataFrameGroupBy 对象中列子集的重复行

Check for duplicate rows for a subset of columns in a Pandas DataFrameGroupBy object

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

您可以尝试 groupbyCol1 然后使用 duplicated() 检查是否有从 Col3Col5

的重复项
out = (df.groupby('Col1')
       .apply(lambda g: g[['Col3','Col4','Col5']].duplicated().any())
       .tolist())
print(out)

[True, True, False]