我创建了一个加权边缘列表,我试图用它来生成加权无向图:
数据位于csv中,在excel中如下所示:
node1 node2 weight
a b 0.1
a c 0.3
根据其他StackOverflow帖子的建议,我一直在使用以下代码来读取csv:
fh=open("<file_location>.csv", 'r')
G = nx.read_weighted_edgelist(fh,delimiter=',')
第一行运行正常但第二行产生错误消息:
TypeError: Failed to convert weight data weight to type type 'float'
如果我检查G,它已经在节点中读取了很好但没有权重,任何想法?
答案 0 :(得分:3)
编辑重组以包含解释代码失败的原因以及解决方法,遵循@ Joel的建议。 @ Joel的回答解释了为什么代码失败,但没有建议如何解决它。
nx.read_weighted_edgelist
将忽略以#
开头的输入行,因此如果您更改csv文件的第一行
node1 node2 weight
到
#node1 node2 weight
然后你应该能够在网络中读取权重。
另请注意read_weighted_edgelist
接受文件路径(字符串)和文件句柄,因此如果您不再使用fh
,则无需先打开它,只需直接传递它。
G = nx.read_weighted_edgelist("<file_location>.csv", delimiter=',')
(这是@Joel的回答)
遇到第一行(来自您的评论:a_node1,b_node2,c_weight
)
它将第一个节点解释为a_node1
,第二个节点解释为b_node2
,并尝试将权重c_weight
分配给它们之间的边缘。
很难将字符串c_weight
转换为浮点数。所以它给出了一个错误。
答案 1 :(得分:1)
遇到第一行(来自您的评论:a_node1,b_node2,c_weight
)
它将第一个节点解释为a_node1
,第二个节点解释为b_node2
,并尝试将权重c_weight
分配给它们之间的边缘。
很难将字符串c_weight
转换为浮点数。所以它给出了一个错误。