如何使用 python 修复 Geocoder 中的关键错误 0
How do I fix the key error 0 in Geocoder with python
我正在尝试从数据框中的一列地址映射出纬度和经度。但它一直给我关键错误 0.
for i in range(len(df['addresses'])):
g = geocoder.arcgis(df['addresses'][i])
coordinates.append(tuple(g.latlng))
这是错误信息
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-43-8a4466f30728> in <module>
1 coordinates = []
2 for i in range(len(df['addresses'])):
----> 3 g = geocoder.arcgis(df['addresses'][i])
4 coordinates.append(tuple(g.latlng))
~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/series.py in __getitem__(self, key)
1069 key = com.apply_if_callable(key, self)
1070 try:
-> 1071 result = self.index.get_value(self, key)
1072
1073 if not is_scalar(result):
~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/indexes/base.py in get_value(self, series, key)
4728 k = self._convert_scalar_indexer(k, kind="getitem")
4729 try:
-> 4730 return self._engine.get_value(s, k, tz=getattr(series.dtype, "tz", None))
4731 except KeyError as e1:
4732 if len(self) > 0 and (self.holds_integer() or self.is_boolean()):
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_value()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_value()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
KeyError: 0
在从 OP 获得更多信息后编辑了此答案。
我假设 df
是一个 Pandas 数据框。
这里的问题是 for i in range(len(df['addresses'])):
在每个循环中给你一个整数。然后,您尝试从 Pandas 数据框中获取包含该整数的列表,这会导致 KeyError
.
从for循环中取出range
和len
,你将从addresses
列中得到一个地址。然后将该地址传递给 geocoder
.
所以,如下:
for address in df['addresses']:
g = geocoder.arcgis(address)
我正在尝试从数据框中的一列地址映射出纬度和经度。但它一直给我关键错误 0.
for i in range(len(df['addresses'])):
g = geocoder.arcgis(df['addresses'][i])
coordinates.append(tuple(g.latlng))
这是错误信息
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-43-8a4466f30728> in <module>
1 coordinates = []
2 for i in range(len(df['addresses'])):
----> 3 g = geocoder.arcgis(df['addresses'][i])
4 coordinates.append(tuple(g.latlng))
~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/series.py in __getitem__(self, key)
1069 key = com.apply_if_callable(key, self)
1070 try:
-> 1071 result = self.index.get_value(self, key)
1072
1073 if not is_scalar(result):
~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/indexes/base.py in get_value(self, series, key)
4728 k = self._convert_scalar_indexer(k, kind="getitem")
4729 try:
-> 4730 return self._engine.get_value(s, k, tz=getattr(series.dtype, "tz", None))
4731 except KeyError as e1:
4732 if len(self) > 0 and (self.holds_integer() or self.is_boolean()):
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_value()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_value()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
KeyError: 0
在从 OP 获得更多信息后编辑了此答案。
我假设 df
是一个 Pandas 数据框。
这里的问题是 for i in range(len(df['addresses'])):
在每个循环中给你一个整数。然后,您尝试从 Pandas 数据框中获取包含该整数的列表,这会导致 KeyError
.
从for循环中取出range
和len
,你将从addresses
列中得到一个地址。然后将该地址传递给 geocoder
.
所以,如下:
for address in df['addresses']:
g = geocoder.arcgis(address)