gpt4 book ai didi

python - 在 python 中高效地为 NetworkX 创建边

转载 作者:太空宇宙 更新时间:2023-11-03 14:51:53 25 4
gpt4 key购买 nike

我有一个 pandas 数据框,它具有一个人的唯一身份和姓氏。我想在所有具有相同姓氏的人之间建立联系。如何有效地做到这一点?

示例数据集:

Identity,LastName
1,Beckham
2,Singh
3,Bagari
4,Shukla
5,Sharma
6,Singh
7,Beckham
8,Beckham
9,Singh

输出:(1,7)、(1,8)、(7,8)、(2,6)、(2,9)、(6,9)

我想建立一个网络,其中身份 (1,7) 、 (1,8) 、 (7,8) 、 (2,6) 、 (2,9) 、 (6,9 )

我可以迭代所有身份然后创建边,但是对于 5,000,000 条奇数记录需要很长时间?有没有更好的解决方案?

最佳答案

让我们将 groupbyitertools 中的组合结合使用:

from itertools import combinations
s = df.groupby('LastName')['Identity'].agg(lambda x: tuple(x.tolist()))
s[s.apply(len)>1].apply(lambda x: list(combinations(x, 2))).sum()

输出:

[(1, 7), (1, 8), (7, 8), (2, 6), (2, 9), (6, 9)]

更新:

from itertools import combinations, chain
list(chain(*df.groupby('LastName')['Identity'].agg(tuple).apply(combinations, r=2)))

输出:

[(1, 7), (1, 8), (7, 8), (2, 6), (2, 9), (6, 9)]

关于python - 在 python 中高效地为 NetworkX 创建边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45842106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com