熊猫从数据帧中删除镜像对



我有一个看起来像这样的数据帧

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]

相关内容

  • 没有找到相关文章

最新更新