import networkx as nx
import pandas as pd
data1 = { 'node1': [1,1,1,2],
'node2': [2,3,6,4],
'weight': [1,1,1,1], }
df1 = pd.DataFrame(data1, columns = ['node1','node2','weight'])
df1.to_csv('training.csv')
df=pd.read_csv('training.csv')
G=nx.from_pandas_dataframe(df1,'node1','node2','weight')
print df1
Adjtraining = nx.adjacency_matrix(G)
print Adjtraining.todense()
输出:
[[0 1 1 0 1]
[1 0 0 1 0]
[1 0 0 0 0]
[0 1 0 0 0]
[1 0 0 0 0]]
但实际输出应为:
[[0 1 1 0 0 1]
[1 0 0 1 0 0]
[1 0 0 0 0 0]
[0 1 0 0 0 0]
[0 0 0 0 0 0]
[1 0 0 0 0 0]]
这是因为我们可以从数据帧中看到节点是1 2 3 4& 6.节点列表中没有节点5.但它仍然应该包含在邻接矩阵中,但是网络x会忽略它。
答案 0 :(得分:0)
节点5不会出现在图表中,因为它是由边缘列表实例化的。如果您想在结果邻接矩阵中使用它,您仍然可以将其添加到图表中。
string str = string.Format("Insert into {0}(id, t, v) values({1}, {2}, {3});{4}",tname, lc,mc,rc, Environment.NewLine);
矩阵的索引是:
G = nx.from_pandas_dataframe(df1, 'node1','node2','weight')
G.add_node(5)
adj = nx.adjacency_matrix(G)
print(adj.todense())
[[0 1 1 1 0 0]
[1 0 0 0 1 0]
[1 0 0 0 0 0]
[1 0 0 0 0 0]
[0 1 0 0 0 0]
[0 0 0 0 0 0]]