计算值时数据框中的KeyError'City'?
Posted
技术标签:
【中文标题】计算值时数据框中的KeyError\'City\'?【英文标题】:KeyError 'City' in Dataframe when Calculating Value?计算值时数据框中的KeyError'City'? 【发布时间】:2018-12-05 16:34:47 【问题描述】:在过去的几天里,我在使用 Python 中的数据框时遇到了一些问题 - 我一直在尝试计算我的数据框中“城市”列的坐标值(但是它有大约 10500 行当我尝试在该列上运行任何函数时,我总是收到 KeyError: 'City'。
背景
我一直在输入一个包含大约 10500 行 x 15 列的 .csv 文件并将其转换为数据框。然后我在末尾添加一个名为“坐标”的附加列来保存“城市”列的坐标值。
#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 的帖子,但似乎没有一个适用于我的情况。
【问题讨论】:
【参考方案1】:这意味着“城市”列不存在。
这可能是“城市”吗?
否则,您可以通过键入以下内容来检查列名:
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?
您输入了错误的分隔符,请在 read_csv 中使用选项 : sep = "\t" ,这将得到修复 :)【参考方案2】:
我发现我的错误,我在打开文件时没有分隔列,所以在读取 CSV 文件时我错过了sep='\t'
。
【讨论】:
以上是关于计算值时数据框中的KeyError'City'?的主要内容,如果未能解决你的问题,请参考以下文章