Создать график с атрибутами узла и ребра из DataFrame - PullRequest
1 голос
/ 06 июля 2019

У меня есть датафрейм pandas, который я хочу преобразовать в сеть со структурой, подобной этой:

[NodeID, TargetID, NodeAttr1, NodeAttr2]

Но суть в том, что у меня есть несколько строк, в которых 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 простым способом, но у меня все еще есть проблема, из-за которой у меня возникают проблемы с назначением атрибутов моим узлам.

Есть ли решение этой проблемы, которое несколько ресурсоэффективно, так как я создаю много больших графовых структур.

...