网络 - 在一个节点和节点列表之间创建边

时间:2017-07-17 19:09:04

标签: nodes networkx edges

我是networkx的新手,无法弄清楚如何阅读我特定的数据格式。

我有一些看起来像的数据(节点,它连接到的节点列表),如下所示:

('person 1', 'person 2, person 3, person 4')

我想添加边缘,使它们看起来像这样:

('person 1', 'person 2')
('person 1', 'person 3')
('person 1', 'person 4')

有没有办法指定第一个节点,并迭代列表以获取其余节点?在我的csv文件中,一列是主节点,第二列是它连接的节点列表,但我无法弄清楚如何将它们全部添加到一起。

2 个答案:

答案 0 :(得分:0)

虽然没有bultin方法,但您可以使用Python切片和列表推导将它们添加到一行中。

import networkx as nx

G = nx.Graph()
nodes = list("ABCD")
G.add_nodes_from(nodes)
G.add_edges_from([(nodes[0],node) for node in nodes[1:]])

nodes [1:]是跳过第一个项目的列表

答案 1 :(得分:0)

回答我自己的问题(因为我终于弄清楚了):

首先,我必须将第二列进行字符串拆分以获取各个名称,并使用分隔符“,”或“,”加一个空格。

MyData$2ndColumn = strsplit(MyData$2ndColumn, ", |,") 

然后我按照问题的要求使用了嵌套将其分为四个不同的条目

MyData <- unnest(MyData)