我有一个由"用户"组成的数据集(pandas frame)。和"用户之间的互动",如:
user, interactions
1, 2 7 9 4
2, 7 1 5 7 8 3
4, 9 5 3
每个数字对应于用户的ID。每个用户可以有N个交互,其中N> = 0。
逗号后面的值是用户的邻居。
如何以执行方式从这些数据创建networkx图?
我在分割字符串后尝试了一些循环,但性能非常差。
谢谢!
答案 0 :(得分:1)
Networkx具有从边缘列表(.add_edges_from()
)添加边缘的功能。
import networkx as nx
import matplotlib.pyplot as plt
user = [1,2,4]
interactions = [
[2, 7, 9, 4],
[7, 1, 5, 7, 8, 3],
[9, 5, 3]
]
# create the edge list
elist = []
for v1,v2 in zip(user,interactions):
elist.extend([(v1,v) for v in v2])
# create graph from edge list
G = nx.Graph()
G.add_edges_from(elist)
# plot graph
nx.draw(G, with_labels=True)
plt.show()