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

地狱

假设我有一个 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()检查是否有任何重复的 from Col3toCol5

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

[True, True, False]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章