首页 > 解决方案 > 如何在熊猫列中应用 Geopy?

问题描述

我的 DataFrame'df'有一列df['Cidade']包含城市名称,我想使用 Geopy 找出每个城市的纬度和经度。以下代码适用于单个城市输入:

address='Pacoti'
geolocator = Nominatim(user_agent="Your_Name")
location = geolocator.geocode(address)
print(location.address)
print((location.latitude, location.longitude))

输出:

Pacoti, Região Geográfica Imediata de Redenção-Acarape, Região Geográfica Intermediária de Fortaleza, Ceará, Região Nordeste, 62770-000, 巴西 (-4.2253561, -38.9208352)

所以我尝试创建一个函数:

def lat_long(x):
  address= x
  geolocator = Nominatim(user_agent="Your_Name")
  location = geolocator.geocode(address)
  return location.latitude, location.longitude

然后我使用'map'了功能:

df['Cidade'].map(lat_long)

但我收到以下错误:

AttributeError: 'NoneType' object has no attribute 'latitude'

我究竟做错了什么?

标签: pythonpandasmap-functiongeopynominatim

解决方案


当您将它们全部映射到其中时,该数据框中可能有一个“坏”条目,当您使用对象经纬度时,它会给您一个无对象。检查是否是这种情况,并为您提供修复它的想法:

if location is none:
  print("something")

推荐阅读