Networkx无法正确读取数据

时间:2018-03-28 03:10:48

标签: python csv graph networkx

我正在尝试读取我创建的边缘列表,但是networkx没有正确读取权重值,我不确定为什么。我最初把它作为一个.edgelist文件,空格作为分隔符并使用了这一行

elephG = nx.read_edgelist('elephant.edgelist', nodetype=str, create_using=nx.DiGraph(), data=(('weight',int),))

这完全没问题,所有内容都被读入,但是我需要制作一个图形,它是多个图形的组合(同样的东西只有很多边缘)这就是出现问题的地方。我注意到那些不完全正确的程度。我用以下方法看了看边缘:

allG.in_edges('China', data=True)

并且一些边缘值确实被错误地读取。有谁知道为什么会这样?我尝试将文件从txt文件操作到edgelist文件到csv文件,但所有格式都读错了。

这是我目前正在做的事情

#Make a master graph
allG = nx.read_edgelist('master.csv',  delimiter=",", create_using=nx.DiGraph(), data=(('weight',int),))
allG.in_edges('China', data=True)

我还注意到,当我从末尾删除大部分行时,它开始再次正确读取权重(我只有167行btw,所以它绝不是超级大量)

我不能发布整个事情,因为它相当大,但这里是输出的snippit以及文件的开头

输出: InEdgeDataView([('South_Africa', 'China', {'weight': 3}), ('Belgium', 'China', {'weight': 1}), ('France', 'China', {'weight': 1}), ('Germany', 'China', {'weight': 1}), ('Hong_Kong', 'China', {'weight': 5}), ('India', 'China', {'weight': 9}),

档案:South_Africa,Vietnam,20 South_Africa,China,15 South_Africa,Mozambique,12 South_Africa,Thailand,4 South_Africa,Malaysia,1 South_Africa,Hong_Kong,1 Cambodia,Vietnam,1 Belgium,China,1 Belgium,Ireland,1 Belgium,South_Korea,1 Belgium,Taiwan,1 China,Vietnam,1 China,Hong_Kong,1 Czech_Republic,Ireland,1 Ethiopia,Thailand,2 France,China,1 France,Vietnam,1 France,Ireland,1 Germany,South_Korea,1 Germany,Taiwan,1 Germany,China,1 Guinea,Uganda,1 Hong_Kong,Vietnam,2 Hong_Kong,China,2 India,Vietnam,5 India,China,1

正如您所看到的,中国的前两个重量读数不正确。

1 个答案:

答案 0 :(得分:0)

似乎数据参数错误。来自doc data=的是一个bool或一个元组列表。在这里,您使用的是单个元组(('weight',int),)

您可能想尝试测试data=True。我相信networkx有一个默认的权重属性。