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
,则会添加除source
、target
和edge_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())
- ```
另请参阅
示例
边上的简单整数权重
>>> 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 类型值的列。