“我有两个文件:nodes.csv和edges.csv,其中包含节点和节点之间的边,如下所示nodes.csv(182个节点)
0
1
2
.
.
.
和由2列(300条边)表示的边
我想通过图形表示这些文件中的节点和边,并计算由边表示的每对节点之间的公共邻居
我尝试了代码
import networkx as nx
import pandas as pd
G=nx.Graph()
node= pd.read_csv("nodes.csv")
edges=pd.read_csv("edges.csv")
for row in node:
G.add_nodes_from(row)
for row in edges:
if len(row) == 2 : # add an edge only if both values are provided
G.add_edge(row[0],row[1])
print(G) # this is give my Graph with 4 nodes and 1 edges
def predict(u, v):
cnbors = list(nx.common_neighbors(G, u, v))
mult_val = G.degree(u) * G.degree(v)
if mult_val == 0:
return 0
else:
return len(cnbors)/ mult_val
for row in edges:
predict(row[0], row[1]) # this is give me an error: u is not in the graph
1条答案
按热度按时间soat7uwm1#
首先,你可以使用
read_edgelist
阅读edges.csv文件来生成图形对象。可能会有一些节点不在edges.csv文件中,因此你可以稍后手动添加它们。图形已经准备好了,代码如下:现在你可以简单地得到所有可能的节点对和它们的公共邻居,如下所示:
结果是一个元组列表,每个元组有三项,包含第一个节点、第二个节点和公共邻居列表。