Найти кратчайшие пути между подключенными узлами (CSV-файлы) - PullRequest
1 голос
/ 25 марта 2020

Я пытаюсь найти самый длинный кратчайший путь (пути) между двумя округами. Мне дали 2 файла .txt, один со всеми узлами (идентификатор округа, население, широта и долгота и пассажиры внутри округа) и один со ссылками (округ округа, округ назначения, расстояние, количество пассажиров).

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 голосов
/ 25 марта 2020

Вы можете использовать функцию read_table с разделителем | для чтения файлов .txt

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

Затем вам нужно найти местоположение стран (см. Эту ссылку: Как выбрать строки из DataFrame на основе значений столбца? ). Затем вы должны рассчитать расстояние между странами.

Что вы пробовали до сих пор? Включите это тоже.

...