首页 > 解决方案 > 如何从熊猫数据框中删除互惠记录?

问题描述

我有以下形式的熊猫数据框:

   head      relation    tail
0   two  DistinctFrom     one
2   two           IsA  number
12  one       Antonym     two
15  one           IsA  number

从上面的数据框中,我只想保留一条记录,其中头部实体与尾部实体相同,尾部实体与头部实体相同。例如,从索引为 0 和索引为 12 的记录器中,我想只保留一个,可能是第一个或最后一个,任何事情都可以。

例如,在保留第一次记录后,最终数据帧将如下所示:

   head      relation    tail
0   two  DistinctFrom     one
2   two           IsA  number
15  one           IsA  number

或者

保留最后一条记录时,数据框会像,

头 关系 尾 2 两个 IsA 编号 12 一个 反义词 2 15 一个 IsA 编号

谢谢。

标签: pythonpandas

解决方案


为两列创建子集,排序np.sort以提高性能,创建 DataFrame 并按 withDataFrame.duplicated过滤boolean indexing

df = df[~pd.DataFrame(np.sort(df[['head','tail']], axis=1), index=df.index).duplicated()]
print (df)
   head      relation    tail
0   two  DistinctFrom     one
2   two           IsA  number
15  one           IsA  number

推荐阅读