用Python将多级字典转换为网络图

2024-06-16 15:18:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我被一个奇怪的问题困住了。我正在从CSV文件中读取数据并将其转换为多级词典。在

我的CSV文件格式如下:共1500行。在

1-103rd Street,1-96th Street,2327.416174
1-116th Street–Columbia University,1-Cathedral Parkway–110th Street,2327.416174
1-125th Street,1-116th Street–Columbia University,2327.416174
1-137th Street–City College,1-125th Street,2327.416174
1-145th Street,1-137th Street–City College,2327.416174
1-14th Street,1-Christopher Street–Sheridan Square,2327.416174

在上面的文件中,第一列表示源站,第二列表示目的站,第三列提供它们之间的距离。在

我将不得不应用Dijkstra算法来寻找两个站点之间的最短距离,为此我需要将整个CSV文件转换成一个加权图,其中每个站点都是一个节点,它们之间的距离就是边缘的权重。在

我的方法:

首先,我读取CSV文件中的每一行,并将其转换为多级字典。我正在找一本合适的词典。下面是我的代码。在

^{pr2}$

现在我需要将这个新创建的字典转换成一个图,以便应用Dijkstra的算法。为此,我使用以下代码:

G = nx.from_dict_of_dicts(my_dict)

但是我得到一个错误,说"TypeError: Input graph is not a networkx graph type"。在

请帮帮我。如何将整个CSV文件转换成图形,以便应用Dijkstra算法来寻找任意两个站点之间的最短距离。在


Tags: 文件csv代码算法距离streetcity字典
1条回答
网友
1楼 · 发布于 2024-06-16 15:18:00

我对NetworkX不是很熟悉,但是我会使用pandas和nx.from_pandas_dataframe()来完成以下操作。在

import pandas as pd
import networkx as nx

df = pd.read_csv('csvpath.csv', names=['origin', 'dest', 'dist'])

g = nx.from_pandas_dataframe(df, source='origin', target='dest', edge_attr='dist')

g['1-103rd Street']['1-96th Street']['dest']
# 2327.416174

相关问题 更多 >