KeyError "Город" в Dataframe при вычислении значения?

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

Задний план

Я ввел файл .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, но ни один из них, похоже, не применим к моей ситуации.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
2 186
2

Ответы 2

Имеется в виду столбец «Город» не существует.

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

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

print df.columns

(Я вижу Python 2.7)

или

print(df.columns)

для Python 3+

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

Я распечатал столбцы и получил следующий результат: Index([u'Identifier\tModel\tUserID\tCountry\tProvince/State\‌​tCity\tFloor Area [ft2]\tStyle\tNumber of Floors\tAge of Home [years]\tNumber of Occuapants\tHas a Heat Pump\tAuxiliary Heat Fuel Type\tNumber of Remote Sensors\tfilename\tCounted Number of Remote Sensors\tCoordinates', u'Coordinates'], dtype='object') Как видите, столбец «Город» существует, поэтому я не уверен, почему я все еще получаю KeyError?

Jerin Raisa 05.12.2018 19:42

У вас неправильный разделитель, используйте параметр: sep = "\ t" в read_csv, и это будет исправлено :)

LaSul 06.12.2018 14:44

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

Другие вопросы по теме