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






Имеется в виду столбец «Город» не существует.
Может ли это быть «город»?
В противном случае вы можете проверить имена столбцов, набрав:
print df.columns
(Я вижу Python 2.7)
или
print(df.columns)
для Python 3+
а затем выберите нужный столбец
У вас неправильный разделитель, используйте параметр: sep = "\ t" в read_csv, и это будет исправлено :)
Я обнаружил свою ошибку, я использовал открытие файла без разделения столбцов, поэтому мне не хватало sep='\t' при чтении файла CSV.
Я распечатал столбцы и получил следующий результат:
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?