NetworkX期望一个(节点和边的)方阵,也许*您想通过它:
In [11]: df2 = pd.concat([df, df.T]).fillna(0)
注意:索引和列的顺序相同很重要!
In [12]: df2 = df2.reindex(df2.columns)In [13]: df2Out[13]: Bar Bat Baz Foo Loc 1 Loc 2 Loc 3 Loc 4 Loc 5 Loc 6 Loc 7 QuuxBar 0 0 0 0 0 0 1 1 0 1 1 0Bat 0 0 0 0 0 0 1 0 0 1 0 0Baz 0 0 0 0 0 0 1 0 0 0 0 0Foo 0 0 0 0 0 0 1 1 0 0 0 0Loc 1 0 0 0 0 0 0 0 0 0 0 0 1Loc 2 0 0 0 0 0 0 0 0 0 0 0 0Loc 3 1 1 1 1 0 0 0 0 0 0 0 0Loc 4 1 0 0 1 0 0 0 0 0 0 0 0Loc 5 0 0 0 0 0 0 0 0 0 0 0 0Loc 6 1 1 0 0 0 0 0 0 0 0 0 0Loc 7 1 0 0 0 0 0 0 0 0 0 0 0Quux 0 0 0 0 1 0 0 0 0 0 0 0In[14]: graph = nx.from_numpy_matrix(df2.values)
如果您希望这样做,则不会将列/索引名称传递给图形
relabel_nodes(您可能需要警惕重复,这在熊猫的Dataframes中是允许的):
In [15]: graph = nx.relabel_nodes(graph, dict(enumerate(df2.columns))) # is there nicer way than dict . enumerate ?
*目前尚不清楚所需图形的列和索引代表什么。



