1 回答
TA贡献1786条经验 获得超11个赞
您使图表的创建过于复杂。您可以使用nx.from_pandas_edgelist更简单的方式从数据帧创建图形(包括边缘属性),并找到最短路径长度:
G = nx.from_pandas_edgelist(df, source='F', target='T', edge_attr=['weight','dummy'],
create_using=nx.DiGraph)
G.edges(data=True)
# EdgeDataView([('a', 'b', {'weight': 1.2, 'dummy': 'q'}),
# ('b', 'c', {'weight': 5.2, 'dummy': 'w'})...
nx.shortest_path_length(G, source='c', target='f', weight='weight')
# 4.0
仔细观察您的方法,问题在于您如何指定 中的权重nx.shortest_path_length。"['attributes']['weight']"当weight参数应设置为指定权重属性名称的字符串时,您正在使用, 。所以在你的情况下,"weight".
因此你得到的结果与:
nx.shortest_path_length(G=g, source='c', target='f', weight=None)
# 2
而你应该按照上面的方式做:
nx.shortest_path_length(G, source='c', target='f', weight='weight')
# 4.0
添加回答
举报