Индекс фрейма данных Ориентация ошибки в блокноте Jupyter - PullRequest
1 голос
/ 30 апреля 2019

при попытке воспроизвести этот пример: https://github.com/ipython-books/cookbook-2nd-code/blob/master/chapter14_graphgeo/02_airports.ipynb Я получаю следующую ошибку в этом коде:

pos = {airport: (v['lon'], v['lat'])
       for airport, v in airports_us.to_dict('index').items()}

вывод:

ValueError                                Traceback (most recent call last)
<ipython-input-121-59fee485c0ec> in <module>
      1 
      2 pos = {airport: (v['lon'], v['lat'])
----> 3        for airport, v in airports_us.to_dict('index').items()}

~\Anaconda3\lib\site-packages\pandas\core\frame.py in to_dict(self, orient, into)
   1314             if not self.index.is_unique:
   1315                 raise ValueError(
-> 1316                     "DataFrame index must be unique for orient='index'."
   1317                 )
   1318             return into_c((t[0], dict(zip(self.columns, t[1:])))

ValueError: DataFrame index must be unique for orient='index'.

Ответы [ 2 ]

1 голос
/ 01 мая 2019

Похоже, они изменили базовый файл . Проблема не во всех аэропортах airports_us, которым присвоен код IATA. Это вы видите с

print(len(airports_us))
# 1435
print(len(set(airports_us.index)))
# 1334
# use to display all keys
# print(set(airports_us.index))

Вы можете выбрать уникальные предметы со следующим кодом

unique_index = set(airports_us.index)
unique_index.remove(np.nan)
airports_us_index = airports_us.index.isin(unique_index)
airports_us = airports_us[airports_us_index]

(что, возможно, не лучший способ сделать это с пандами, но это работает)

0 голосов
/ 17 мая 2019

Я предлагаю использовать функцию df.dropna () в pandas в столбцах iata code, чтобы очистить ваши данные

...