Ошибка 'City' в Dataframe при вычислении значения? - PullRequest
0 голосов
/ 05 декабря 2018

В последние пару дней у меня возникли некоторые проблемы с работой с фреймом данных в Python - я пытался вычислить значения координат для столбца «Город» в моем фрейме данных (однако в нем около 10500 строк)Я всегда получаю KeyError: 'City', когда пытаюсь запустить какие-либо функции в этом столбце.

Фон

Я вводил файл .csv, который содержит около 10500 строк x 15 столбцов.и преобразование его в фрейм данных. Затем я добавляю дополнительный столбец в конце «Координаты» для хранения значений координат столбца «Город».

#inserting my .csv file to convert to a dataframe
df = pd.read_csv("/path/to/test.csv")

#creating new column 'Coordinates' to insert into dataframe at the end
df['Coordinates'] = '0,0'

# practice location finding using geopy
geolocator = Nominatim(timeout =10)

#method to calculate latitude and longitude
def eval_results(x):
try:
    return (x.latitude, x.longitude)
except:
    return (None, None)

#calculating the coordinates value by running the following methods on the 'City' column
df['Coordinates'] = df['City'].apply(geolocator.geocode,
timeout=1000000).apply(lambda x: eval_results(x))

Ошибка

Однако, когда я запускаю код, я получаю следующую ошибку:

Traceback (most recent call last):
  File "metadata-geo.py", line 27, in <module>
metadata_df['Coordinates'] = metadata_df['City'].apply(geolocator.geocode,timeout=1000000).apply(lambda x: eval_results(x))
  File "/usr/local/lib/python2.7/site-packages/pandas/core/frame.py", line 2688, in __getitem__
return self._getitem_column(key)
  File "/usr/local/lib/python2.7/site-packages/pandas/core/frame.py", line 2695, in _getitem_column
return self._get_item_cache(key)
  File "/usr/local/lib/python2.7/site-packages/pandas/core/generic.py", line 2489, in _get_item_cache
values = self._data.get(item)
  File "/usr/local/lib/python2.7/site-packages/pandas/core/internals.py", line 4115, in get
loc = self.items.get_loc(item)
  File "/usr/local/lib/python2.7/site-packages/pandas/core/indexes/base.py", line 3080, in get_loc
return self._engine.get_loc(self._maybe_cast_indexer(key))
  File "pandas/_libs/index.pyx", line 140, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/index.pyx", line 162, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/hashtable_class_helper.pxi", line 1492, in pandas._libs.hashtable.PyObjectHashTable.get_item
  File "pandas/_libs/hashtable_class_helper.pxi", line 1500, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 'City'

Я не совсем уверен, что это за ошибка, и я просматривал много сообщений, касающихся KeyErrors, но ни одногоиз них, кажется, относятся к моей ситуации.

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Я обнаружил свою ошибку, я использовал открытие файла без разделения столбцов, поэтому при чтении файла CSV мне не хватало sep='\t'.

0 голосов
/ 05 декабря 2018

Это означает, что столбец "Город" не существует .

Может ли это быть "город"?

В противном случае вы можете проверить имена столбцов, набрав:

print df.columns

(я вижу python 2.7)

или

print(df.columns)

для python 3 +

и затем выберите нужный столбец

...