to_pandas_adjacency#

to_pandas_adjacency(G, nodelist=None, dtype=None, order=None, multigraph_weight=<built-in function sum>, weight='weight', nonedge=0.0)[source]#

将图的邻接矩阵返回为 Pandas DataFrame。

参数:
Ggraph

用于构造 Pandas DataFrame 的 NetworkX 图。

nodelistlist, optional

行和列按照 nodelist 中的节点顺序排列。如果 nodelist 为 None,则顺序由 G.nodes() 生成。

multigraph_weight{sum, min, max}, optional

一个运算符,用于确定如何处理多重图中的权重。默认是求和多条边的权重。

weightstring or None, optional

表示边权重的数值的边属性。如果边没有此属性,则使用值 1 代替。

nonedgefloat, optional

对应于非边的矩阵值通常设为零。但是,如果存在对应于实际边且值为零的矩阵值,这可能是不希望的。如果是这种情况,可能更倾向于将非边设置为其他值,例如 nan。

返回:
dfPandas DataFrame

图的邻接矩阵

说明

对于有向图,条目 i,j 对应于从 i 到 j 的边。

DataFrame 条目被赋值为权重边属性。当边没有权重属性时,条目的值设为 1。对于多重(并行)边,条目的值由 ‘multigraph_weight’ 参数确定。默认是求和每条并行边的权重属性。

nodelist 不包含 G 中的所有节点时,矩阵是根据 nodelist 中的节点诱导的 G 的子图构建的。

图中用于自环边的约定是将对角矩阵条目值赋予边的权重属性(如果边没有权重属性则为 1)。如果希望采用将边权重加倍的替代约定,可以通过如下方式修改生成的 Pandas DataFrame

>>> import pandas as pd
>>> G = nx.Graph([(1, 1), (2, 2)])
>>> df = nx.to_pandas_adjacency(G)
>>> df
     1    2
1  1.0  0.0
2  0.0  1.0
>>> diag_idx = list(range(len(df)))
>>> df.iloc[diag_idx, diag_idx] *= 2
>>> df
     1    2
1  2.0  0.0
2  0.0  2.0

示例

>>> G = nx.MultiDiGraph()
>>> G.add_edge(0, 1, weight=2)
0
>>> G.add_edge(1, 0)
0
>>> G.add_edge(2, 2, weight=3)
0
>>> G.add_edge(2, 2)
1
>>> nx.to_pandas_adjacency(G, nodelist=[0, 1, 2], dtype=int)
   0  1  2
0  0  2  0
1  1  0  0
2  0  0  4