0
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()
出力:networkx
[[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]]
が、実際の出力は次のようになります。私たちはデータフレームから見ることができるようにノードが1 2をしているため
[[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]]
です3 4 & 6.ノード5はノードリストにありません。しかし、それでも隣接行列に含める必要がありますが、networkxでは無視されます。
2質問:1)あなたはtraining.csvを提供することができますか? 2)networkxがノード5の存在を知るべき理由はあるのでしょうか? – Joel
@Joel Oops df1はtraining.csvであることを意図していました。申し訳ありません!私は編集しました。隣接行列では行と列がグラフのノードを表しているため、隣接行列には5行と5列実際には6つのノードがある場合にのみグラフに5つのノードがあるようになります。グラフには5つのノードが存在しない –