当我没有收到手动运行代码时,在 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】:

icheap_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 代码时

当我运行以下代码时,我收到一个 Servlet 404 错误 [重复]

kivy textinput 无法输入文字