from_pandas_edgelist#

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

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

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

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

参数:
dfPandas DataFrame

图的边列表表示

sourcestr 或 int

源节点(对于有向图)的有效列名(字符串或整数)。

targetstr 或 int

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

edge_attrstr, int, iterable, True, 或 None

有效的列名(字符串或整数),或者列名组成的迭代器,用于检索项并将其作为边属性添加到图中。如果为 True,则会添加除 sourcetargetedge_key 之外的所有列。如果为 None,则不向图中添加任何边属性。

create_usingNetworkX 图构造器,可选 (默认=nx.Graph)

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

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

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

如果您的节点属性存储在单独的 DataFrame `df_nodes` 中,
您可以使用以下代码将这些属性加载到图 `G` 中
```
df_nodes = pd.DataFrame({“node_id”: [1, 2, 3], “attribute1”: [“A”, “B”, “C”]})
G.add_nodes_from((n, dict(d)) for n, d in df_nodes.iterrows())
```

另请参阅

to_pandas_edgelist

示例

边上的简单整数权重

>>> 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'}})
----

其他后端实现了此函数

cugraphGPU 加速后端。

也支持 cudf.DataFrame 输入;不支持包含 str 类型值的列。