如何link两栏基于第三栏构建网络

How to link two columns based on a third columns to build network

我是 networkx 和 python 的新手。 我的数据库有 3 列,如下所示:

f_id s_id date
12345 506678 24-05-2005

我想通过 networkx 创建一个网络,但首先我需要根据日期连接节点

例如: lf_id -> s_id

其中 (->) link 是日期

我知道如何将网络创建为有向网络,但我已尝试连接两列,但我做不到,所以我所做的是这样的:

import netowkrx as nx
import pandas as pd

df = pd.read_csv("connect_data.csv")

df1 = df[['f_id', 's_id', 'date']]

G = nx.DiGraph()
G = nx.from_pandas_dataframe(df,['f_id','s_id'])

但这并不正确!而且我想不出任何人都可以帮助解决如何根据日期连接两列的方法。

您可以使用 nx.from_pandas_edgelist,它允许从具有边缘数据的数据框创建图形。由于您似乎希望 date 被图形拾取,因此您还可以添加 边属性 。生成的边缘如下所示:

G = nx.from_pandas_edgelist(df, source='f_id', target='s_id', edge_attr='date')

G.edges(data=True)
# EdgeDataView([(12345, 506678, {'date': '24-05-2005'})])