python - 使用 networkx 加权边缘列表时出错

标签 python networkx weighted-graph

我已经创建了一个加权边列表,我试图用它来生成一个加权无向图:

数据在 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,它已正确读取节点但未读取权重,有什么想法吗?

最佳答案

编辑:根据@Joel 的建议,重组以包括对代码失败原因和解决方法的解释。 @Joel 的回答提供了代码失败原因的解释,但不是建议如何移动解决它。

解决方案

nx.read_weighted_edgelist 将忽略以 # 开头的输入行,因此如果您将 csv 文件的第一行从

node1 node2 weight

#node1 node2 weight

那么你应该能够在网络中读取权重。

另请注意,read_weighted_edgelist 接受文件路径(字符串)和文件句柄,因此如果您不再使用 fh,则不需要要先打开,直接pass就可以了。

G = nx.read_weighted_edgelist("<file_location>.csv", delimiter=',')

为什么你的代码失败了

(这是从@Joel 的回答中合并的)

当它遇到第一行时(来自你的评论:a_node1,b_node2,c_weight)

它将第一个节点解释为 a_node1,将第二个节点解释为 b_node2,并尝试将权重 c_weight 分配给边缘它们之间。

很难将字符串 c_weight 转换为 float 。所以报错。

关于python - 使用 networkx 加权边缘列表时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43440478/

相关文章:

python - 这个介数计算正确吗?

Python 从另一个线程启动/停止线程会导致意外行为

python - scipy.optimize.leastq 最小化最小二乘和

python - 采用节点网络并插入缺失值的最佳方法

algorithm - 通过特定顶点的有向图中最轻量级的圆

java - 室友匹配算法

java - 图最小权重路径

python - 使用 Mechanize bing 搜索返回空白页

python - 如何解决 NLU Watson API 中的内容为空错误?

python - 用 Python 解决图形问题