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。
- Parameters:
- G图
用于构造Pandas DataFrame的NetworkX图。
- nodelist列表, 可选
行和列根据
nodelist
中的节点顺序排列。 如果nodelist
为None,则顺序由G.nodes()生成。- multigraph_weight{sum, min, max}, 可选
确定多重图中权重处理方式的运算符。 默认是将多条边的权重相加。
- weight字符串或None, 可选
用于边权重的边属性。如果边没有该属性,则使用值1。
- nonedge浮点数, 可选
对应于非边的矩阵值通常设置为零。 然而,如果有实际边的值也为零,这可能不合适。 如果需要,可以将非边设置为其他值,例如nan。
- Returns:
- dfPandas DataFrame
图的邻接矩阵
Notes
对于有向图,条目i,j对应于从i到j的边。
DataFrame的条目被分配给边权重属性。当边没有权重属性时,条目值设置为1。对于多重(平行)边,条目值由’multigraph_weight’参数决定。默认是将每条平行边的权重属性相加。
当
nodelist
不包含G
中的每个节点时,矩阵由G
中由nodelist
节点诱导的子图构建。图中自环边的约定是将矩阵对角线条目值分配给边的权重属性(如果没有权重属性,则为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
Examples
>>> 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