从DataFram生成具有节点和边属性的图

2024-10-02 02:43:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据帧,我想转换成一个网络,结构如下:

[节点ID,目标ID,节点ATTR1,节点ATTR2]

但关键是,我确实有一些行,其中TargetID可能为None,因为网络中存在未连接的节点。 有没有一个简单的方法,创建一个网络结构和分配我的属性?你知道吗

我试过:

G = nx.from_pandas_edgelist(df)

但是这个方法只给了我添加边属性的选项,没有给节点添加任何属性。它还将从没有连接到空心的节点创建边。所以不是我想要的。你知道吗

import pandas as pd
import networkx as nx

d = {'NodeID': [1, 2], 'TargetID': [2, None], 'NodeAttr1': ['aaaa', 'bbbbb'], 'NodeAttr2': [3, 4]}
df = pd.DataFrame(data=d)

node_df = df[df['Node_ID']]
edge_df = df[df.TargetID.notnull()]

G = nx.from_pandas_edgelist(edge_df, 'NodeID', 'TargetID')
G.add_nodes_from(node_df['NodeID'])

这段代码将以一种简单的方式创建网络i,但我仍然有一个问题,即无法为节点分配属性。你知道吗

有没有一个解决这个问题的办法,这是有点资源效率,因为我正在创建大量的大图结构。你知道吗


Tags: 方法fromimport网络noneidpandasdf

热门问题