我正在尝试读取我创建的边缘列表,但是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
正如您所看到的,中国的前两个重量读数不正确。
答案 0 :(得分:0)
似乎数据参数错误。来自doc data=
的是一个bool或一个元组列表。在这里,您使用的是单个元组(('weight',int),)
。
您可能想尝试测试data=True
。我相信networkx有一个默认的权重属性。