我是networkx的新手,无法弄清楚如何阅读我特定的数据格式。
我有一些看起来像的数据(节点,它连接到的节点列表),如下所示:
('person 1', 'person 2, person 3, person 4')
我想添加边缘,使它们看起来像这样:
('person 1', 'person 2')
('person 1', 'person 3')
('person 1', 'person 4')
有没有办法指定第一个节点,并迭代列表以获取其余节点?在我的csv文件中,一列是主节点,第二列是它连接的节点列表,但我无法弄清楚如何将它们全部添加到一起。
答案 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)