python 删除 Dataframe Pandas中的相同组合

ibps3vxo  于 2022-11-21  发布在  Python
关注(0)|答案(1)|浏览(118)

我有一个 Dataframe ,它是一个无向图的边列表,它看起来像这样:

node 1 node 2 doc
0   Kn  Kn  doc5477 
1   TS  Kn  doc5477 
2   Kn  TS  doc5477 
3   TS  TS  doc5477 
4   Kn  Kn  doc10967
5   Kn  TS  doc10967
6   TS  TS  doc10967
7   TS  Kn  doc10967

如何确保每个文档的节点组合只出现一次?这意味着,由于第1行和第2行的值相同,因此我只希望它出现一次。第5行和第7行的值也相同?
因此,我的 Dataframe 看起来像这样:

node 1 node 2 doc
0   Kn  Kn  doc5477 
1   TS  Kn  doc5477     
3   TS  TS  doc5477 
4   Kn  Kn  doc10967
5   Kn  TS  doc10967
6   TS  TS  doc10967
xdnvmnnf

xdnvmnnf1#

首先,选择需要唯一组合的列(在您的示例中为node1node2doc),然后应用排序以返回包含组合列表的序列,最后使用带有负pandas.DataFrame.duplicated的布尔掩码以仅保留表示唯一组合的行。
试试看:

out= df.loc[~df[['node 1','node 2', 'doc']].apply(sorted, axis=1).duplicated()]
#输出:
print(out)

  node 1 node 2        doc
0     Kn     Kn    doc5477
1     TS     Kn    doc5477
3     TS     TS    doc5477
4     Kn     Kn   doc10967
5     Kn     TS   doc10967
6     TS     TS   doc10967

相关问题