from_pandas_edgelist#
- from_pandas_edgelist(df, source='source', target='target', edge_attr=None, create_using=None, edge_key=None)[源代码]#
从包含边缘列表的熊猫数据帧返回一个图表。
PADAS数据帧应至少包含两列节点名称和零列或更多列边缘属性。每一行将作为一个边缘实例进行处理。
注意:此函数迭代dataframe.values,但不保证在行中的列之间保留数据类型。这只是一个问题,如果您的行是完全数字的,并且混合了int和float。在这种情况下,所有值都将作为浮点返回。有关示例,请参见dataframe.iterrow文档。
- 参数
- df熊猫数据框
图的边列表表示法
- source字符串或整型
源节点的有效列名(字符串或整数)(用于定向情况)。
- target字符串或整型
目标节点的有效列名(字符串或整数)(用于定向情况)。
- edge_attr字符串或整型、可迭代、True或无
用于检索项目并将其作为边属性添加到图中的有效列名(字符串或整型)或可迭代的列名。如果
True
,则将添加所有剩余的列。如果None
,则不会将边属性添加到图形中。- create_usingNetworkX图形构造函数,可选(默认=nx.Graph)
要创建的图表类型。如果是图表实例,则在填充之前清除。
- edge_key字符串或无,可选(默认值=无)
边关键帧的有效列名(对于多重图)。如果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'}})