查找已连接节点(csv文件)之间的最短路径

时间:2020-03-24 21:19:46

标签: python-3.x csv jupyter-notebook networkx edges

我正在寻找两个县之间最长的最短路径。我得到了2个.txt文件,其中一个包含所有节点(县ID,人口,纬度和经度以及县内的通勤者),一个带有链接(源县,目的县,距离,通勤者数量)。

01001 43671 32.523283 -86.577176 7871
01003 140415 30.592781 -87.748260 45208
01005 29038 31.856515 -85.331312 8370
01007 20826 33.040054 -87.123243 3199
01009 51024 33.978461 -86.554768 8966
01011 11714 32.098285 -85.704915 2237
01013 21399 31.735884 -86.662232 5708
01015 112249 33.741989 -85.817544 39856
01017 36583 32.891233 -85.288745 9281
01019 23988 34.184158 -85.621930 4645
01021 39593 32.852554 -86.689982 8115
01023 15922 32.027681 -88.257855 3472
01025 27867 31.688155 -87.834164 7705
...
01001 01001 0 7871
01001 01007 76.8615966430995 7
01001 01013 87.9182871130127 37
01001 01015 152.858742124667 5
01001 01021 38.1039665382023 350
01001 01031 140.051395101308 8
01001 01037 57.6726084645634 12
01001 01047 48.517875245493 585
01001 01051 38.9559472915165 741
01001 01053 169.524277177911 5
01001 01059 245.323879285783 7
01001 01065 102.775324022097 2
01001 01073 114.124721221283 142
...
01003 48439 932.019063970525 9
01003 53033 3478.13978129133 11
01003 54081 997.783781484149 10
01005 01005 0.000134258785931453 8370
01005 01011 44.3219329413987 72
01005 01021 168.973302699063 7
...

具有节点的第一个文件称为“ THE_NODES.txt”,第二个文件名为“ THE_LINKS.txt”。 如何使用python代码在两个县中的任何一个之间找到最长的最短路径?我假设我先制作网络图,并且由于第二个文件具有连接,所以对边缘使用“ THE_LINKS.txt”(我不知道权重是否就是距离?)?另外,我认为这些文件只能作为csv读取(如果我输入错了,请更正我),因此我不能(或不知道如何)使用networkx解决此问题。

1 个答案:

答案 0 :(得分:0)

您可以使用带有|分隔符的read_table函数来读取.txt文件

node = pd.read_table('node.txt', sep='|', header=None)
links = pd.read_table('links.txt', sep='|', header=None)

然后,您需要查找国家/地区的位置(请参考此链接:How to select rows from a DataFrame based on column values?)。然后,您必须计算国家之间的距离。

到目前为止,您尝试了什么?也包括在内。