Я не знаю, правильно ли я понял вопрос, но если вам нужен упорядоченный список городов с кратчайшим путем из выбранного города, вы можете сделать это так:
df = pd.DataFrame({"From city": ['A', 'B', 'C', 'D'], 'A':[np.NaN,2166,577,175], 'B':[2166,np.NaN,1806,2092], 'C':[577,1806,np.NaN,653], 'D':[175,2092,653,np.NaN]})
df.set_index('From city', inplace=True)
print df
A B C D
From city
A NaN 2166.0 577.0 175.0
B 2166.0 NaN 1806.0 2092.0
C 577.0 1806.0 NaN 653.0
D 175.0 2092.0 653.0 NaN
dic = df.to_dict(orient='records')
city=dic[3]
from math import isnan
city = {k: city[k] for k in city if not isnan(city[k])}
city_order = sorted(city.items(), key=lambda x:x[1])
city_list = [i[0] for i in city_order]
Пояснение:
Сделать словарь из df:
dic = df.to_dict(orient='records')
Выберите свой город (для города 'D' -> 3)
city=dic[3]
Удалить элемент NaN
from math import isnan
city = {k: city[k] for k in city if not isnan(city[k])}
Заказать
city_order = sorted(city.items(), key=lambda x:x[1])
Взять только города:
city_list = [i[0] for i in city_order]
print city_list
Выход:
['A', 'C', 'B']