當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。