Python 从数据帧中删除镜像对

Python 从数据帧中删除镜像对,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个像这样的数据框 A B C D E a b .1 .3 .9 c d .2 .4 .5 b a .1 .3 .9 d c .2 .4 .5 A B C D E a b .1 .3 .9 c d .2 .4 .5 因为第3行和第4行与第1行和第2行相同,所以我需要删除它们。最终的数据帧如下所示 A B C D E a b .1 .3 .9 c d .2 .4 .5 b a .1 .3 .9 d c .2 .4 .5 A B C D

我有一个像这样的数据框

A  B  C  D  E
a  b .1 .3 .9
c  d .2 .4 .5
b  a .1 .3 .9
d  c .2 .4 .5
A  B  C  D  E
a  b .1 .3 .9
c  d .2 .4 .5
因为第3行和第4行与第1行和第2行相同,所以我需要删除它们。最终的数据帧如下所示

A  B  C  D  E
a  b .1 .3 .9
c  d .2 .4 .5
b  a .1 .3 .9
d  c .2 .4 .5
A  B  C  D  E
a  b .1 .3 .9
c  d .2 .4 .5
df.drop_duplicates仅删除相似对,而不删除镜像对。是否有任何简单的方法可以在pandas中实现以删除此类镜像副本。谢谢

编辑:
我刚刚尝试过删除重复项(subset=['C','D','E']),它将给出这个数据帧的结果。是否有其他基于“A”、“B”的解决方案

使用apply可能不是最有效的,但这里有一个选项:

import pandas as pd

data ='''\
A  B  C  D  E
a  b .1 .3 .9
c  d .2 .4 .5
b  a .1 .3 .9
d  c .2 .4 .5'''

df = pd.read_csv(pd.compat.StringIO(data), sep='\s+')

mask = df[['A','B']].apply(lambda x: list(set(x)), axis=1).duplicated()

df[~mask]

np.排序
+
删除重复项

df.loc[pd.DataFrame(np.sort(df[['A','B']],1),index=df.index).drop_duplicates(keep='first').index]
Out[316]: 
   A  B    C    D    E
0  a  b  0.1  0.3  0.9
1  c  d  0.2  0.4  0.5

A
B
列是不同的。你如何定义“相同”?亚历克斯他把它们看作是“镜子”。哦,是的。。。np.sort()。。。但是,我不会使用“last”,因为3个或更多的重复值只会删除last。因此使用了~and keep='first'(默认值)。很好!但不要忘记~或再次得到3或更多的多个值。hehe@JaswanthKumaryw~:-)快乐编码