我有一个看起来像这样的数据帧
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
由于第 3 行和第 4 行与第 1 行和第 2 行相同,因此我需要删除它们。最终数据帧将如下所示
A B C D E
a b .1 .3 .9
c d .2 .4 .5
df.drop_duplicates仅删除相似的对,而不删除镜像对。有没有简单的方法可以在熊猫中实现删除此类镜像重复项。谢谢!
编辑:我刚刚尝试了drop_duplicates(子集=['C','D','E'](,它将给出此数据框的结果。是否有其他基于"A"、"B"的解决方案。
np.sort
+ drop_duplicates
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
也许不是最有效的,因为它使用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]