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