当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python NetworkX from_pandas_edgelist用法及代码示例


本文简要介绍 networkx.convert_matrix.from_pandas_edgelist 的用法。

用法:

from_pandas_edgelist(df, source='source', target='target', edge_attr=None, create_using=None, edge_key=None)

从 Pandas DataFrame 返回包含边列表的图。

Pandas DataFrame 应包含至少两列节点名称和零或多列边属性。每一行将作为一个边实例处理。

注意:此函数迭代 DataFrame.values,这不能保证保留行中跨列的数据类型。仅当您的行完全是数字并且是整数和浮点数的混合时,这才是问题。在这种情况下,所有值都将以浮点数形式返回。有关示例,请参阅DataFrame.iterrows 文档。

参数

df Pandas DataFrame

图的边列表表示

sourcestr 或 int

源节点的有效列名(字符串或整数)(针对有向情况)。

targetstr 或 int

目标节点的有效列名(字符串或整数)(针对有向情况)。

edge_attrstr 或 int、可迭代、True 或 None

一个有效的列名(str 或 int)或列名的可迭代,用于检索项目并将它们作为边属性添加到图中。如果 True ,将添加所有剩余的列。如果 None ,则不向图中添加边属性。

create_usingNetworkX 图形构造函数,可选(默认=nx.Graph)

要创建的图表类型。如果是图形实例,则在填充之前清除。

edge_keystr 或无,可选(默认=无)

边键的有效列名(对于 MultiGraph)。如果create_using 是多重图,则此列中的值用于添加边时的边键。

例子

边上的简单整数权重:

>>> import pandas as pd
>>> pd.options.display.max_columns = 20
>>> import numpy as np
>>> rng = np.random.RandomState(seed=5)
>>> ints = rng.randint(1, 11, size=(3, 2))
>>> a = ["A", "B", "C"]
>>> b = ["D", "A", "E"]
>>> df = pd.DataFrame(ints, columns=["weight", "cost"])
>>> df[0] = a
>>> df["b"] = b
>>> df[["weight", "cost", 0, "b"]]
   weight  cost  0  b
0       4     7  A  D
1       7     1  B  A
2      10     9  C  E
>>> G = nx.from_pandas_edgelist(df, 0, "b", ["weight", "cost"])
>>> G["E"]["C"]["weight"]
10
>>> G["E"]["C"]["cost"]
9
>>> edges = pd.DataFrame(
...     {
...         "source": [0, 1, 2],
...         "target": [2, 2, 3],
...         "weight": [3, 4, 5],
...         "color": ["red", "blue", "blue"],
...     }
... )
>>> G = nx.from_pandas_edgelist(edges, edge_attr=True)
>>> G[0][2]["color"]
'red'

使用自定义键构建多重图:

>>> edges = pd.DataFrame(
...     {
...         "source": [0, 1, 2, 0],
...         "target": [2, 2, 3, 2],
...         "my_edge_key": ["A", "B", "C", "D"],
...         "weight": [3, 4, 5, 6],
...         "color": ["red", "blue", "blue", "blue"],
...     }
... )
>>> G = nx.from_pandas_edgelist(
...     edges,
...     edge_key="my_edge_key",
...     edge_attr=["weight", "color"],
...     create_using=nx.MultiGraph(),
... )
>>> G[0][2]
AtlasView({'A': {'weight': 3, 'color': 'red'}, 'D': {'weight': 6, 'color': 'blue'}})

相关用法


注:本文由纯净天空筛选整理自networkx.org大神的英文原创作品 networkx.convert_matrix.from_pandas_edgelist。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。