networkx.convert_matrix.from_pandas_edgelist

from_pandas_edgelist(df, source='source', target='target', edge_attr=None, create_using=None)[源代码]

从包含边缘列表的熊猫数据帧返回一个图表。

PADAS数据帧应至少包含两列节点名称和零列或更多列边缘属性。每一行将作为一个边缘实例进行处理。

注意:此函数迭代dataframe.values,但不保证在行中的列之间保留数据类型。这只是一个问题,如果您的行是完全数字的,并且混合了int和float。在这种情况下,所有值都将作为浮点返回。有关示例,请参见dataframe.iterrow文档。

参数
  • df熊猫数据帧 )--图的边列表表示法

  • 来源STR或INT )--源节点的有效列名称(字符串或整数)(对于定向大小写)。

  • 目标STR或INT )--目标节点的有效列名称(字符串或整数)(对于定向大小写)。

  • edge_attrstr或int、iterable、true或none )--有效的列名(str或int)或列名的iterable,用于检索项并将其作为边缘属性添加到图形中。如果 True ,将添加其余所有列。如果 None ,图中不添加任何边属性。

  • create_usingNetworkX graph constructor, optional (default=nx.Graph) )--要创建的图表类型。如果图形实例,则在填充之前清除。

实际案例

边缘上的简单整数权重:

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