当我没有收到手动运行代码时,在 Python for 循环中收到 KeyError
Posted
技术标签:
【中文标题】当我没有收到手动运行代码时,在 Python for 循环中收到 KeyError【英文标题】:Receiving a KeyError in a Python for loop when I do not receive one running the code manually 【发布时间】:2020-11-12 23:54:37 【问题描述】:我正在尝试使用 geopy 库来获取旧金山 10 个社区的纬度和经度值。出于某种原因,代码将单独运行每个邻域的索引,但当我尝试循环遍历整个列时会返回 KeyError。
例如,以下代码返回第一个社区的坐标,即加利福尼亚州旧金山的金银岛:
geolocator = Nominatim(user_agent = 'sf_explorer')
location = geolocator.geocode(cheap_df['Address'][0])
latitude = location.latitude
longitude = location.longitude
print('The geographical coordinates of Treasure Island, San Francisco are , .'.format(latitude, longitude))
我想在整个列中循环这段代码,并将纬度和经度值附加到两个单独的列表中。以下是我如何调整代码以作为 for 循环运行:
lat = []
lon = []
for i in cheap_df['Address']:
geolocator = Nominatim(user_agent = 'sf_explorer')
location = geolocator.geocode(cheap_df['Address'][i])
latitude = location.latitude
longitude = location.longitude
lat.append(latitude)
lon.append(longitude)
但是,在运行时,我得到以下 KeyError,箭头指向第 7 行(以 location 开头的行):
KeyError: 'Treasure Island, San Francisco, California'
有谁知道我做错了什么,以及如何解决它?非常感谢任何帮助!
【问题讨论】:
请显示完整的回溯。 【参考方案1】:i
是cheap_df['Address']
的元素,而不是索引。您不应该尝试将其用作索引,而是按原样使用。
location = geolocator.geocode(i)
【讨论】:
非常感谢您的解释!以上是关于当我没有收到手动运行代码时,在 Python for 循环中收到 KeyError的主要内容,如果未能解决你的问题,请参考以下文章
我收到一个错误“命令不同步;当我使用mysqli_multi_query时,你现在无法运行此命令
当我收到错误信息“Can't locate getopts.pl in @INC...”时,我需要哪个模块
从 Windows 应用商店安装手动安装 Python PIP 包的问题
我收到“运行时 API 错误:设备序号无效。”当我使用 GTX 590 在 Ubuntu 10.04 上运行 cuda 代码时