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