删除多列上的重复项,无论顺序如何 (a/b == b/a)

puh*_*huk 1 python duplicates pandas

有没有办法在不考虑顺序的情况下删除 pandas 中重复对的行?

删除前的数据框 --> 想要删除重复对(黄色)

在此输入图像描述

删除重复后

在此输入图像描述

示例数据:

df = pd.DataFrame({'a': [1,2,1,1,2,2],
                   'b': [2,1,3,4,3,4]
                  })
Run Code Online (Sandbox Code Playgroud)

moz*_*way 5

您可以生成一个frozenset具有公共无序项的groupby,然后first按组获取该项:

df.groupby(df.apply(frozenset, axis=1), as_index=False).first()
Run Code Online (Sandbox Code Playgroud)

duplicated或在系列上使用frozenset

df[~df.apply(frozenset, axis=1).duplicated()]
Run Code Online (Sandbox Code Playgroud)

输出:

   a  b
0  1  2
1  1  3
2  1  4
3  2  3
4  2  4
Run Code Online (Sandbox Code Playgroud)