如何使用 geopy 获取数据框中地址列的纬度和纬度?
How to get latitude and latitude for an address column in a dataframe using geopy?
我目前正在研究 kaggle 数据集 House price prediction
它在纬度和纬度列中有错误,所以我决定使用 geopy 为这两列获取正确的值。
如果我在一个地址上使用它,效果很好,但 returns None 如果应用于整个列。
city = []
lat = []
longi = []
for addr in train_df['address']:
geolocator = Nominatim(user_agent="ram")
location = geolocator.geocode(addr), timeout=100, language = 'en')
city.append(location.address.split(',')[-4])
lat.append(location.latitude)
longi.append(location.longitude)
它returnsNone,可能是因为多次访问。
请帮我推荐一些其他方法来获取数据框 'address' 列的纬度和经度(或其他一些用于相同工作的库)。
问题出在数据集的地址上。如果你使用下面的 try catch 代码,你可以看到数据集中有很多错误的地址。
for addr in train_df['ADDRESS']:
geolocator = Nominatim(user_agent="ram")
location = geolocator.geocode(addr, timeout=10000, language = 'en')
try:
city.append(location.address.split(',')[-4])
lat.append(location.latitude)
longi.append(location.longitude)
except:
print(addr)
例如,地址之一是“Garebhavipalya,Bangalore”。如果您在 google 中搜索,正确的地址是“Garvebhavi Palya,Bangalore”。它是“Garvebhavi Palya”,但数据集显示为“Garebhavipalya,Bangalore”。因此,如果您使用以下代码检查该地址,您可以获得班加罗尔地址,经度和纬度接近数据集的数据。
geolocator = Nominatim(user_agent="ram")
location = geolocator.geocode("Garvebhavi Palya,Bangalore", timeout=100, language = 'en')
print(location.address)
print(location.latitude)
print(location.longitude)
要检查给定数据集的经纬度地址,可以使用反向。
geolocator = Nominatim(user_agent="ram")
location = geolocator.reverse("12.96991,77.59796")
print(location.address)
由于我不熟悉班加罗尔,我不确定数据集的纬度 12.96991 和经度 77.59796 是否是这个“Garebhavipalya,Bangalore”地址。但我认为问题出在数据集的“ADDRESS”上。
顺便说一句,我觉得这个 GeoPy 库非常好。当你在这里问的时候我才知道。感谢您的提问:)
我目前正在研究 kaggle 数据集 House price prediction
它在纬度和纬度列中有错误,所以我决定使用 geopy 为这两列获取正确的值。
如果我在一个地址上使用它,效果很好,但 returns None 如果应用于整个列。
city = []
lat = []
longi = []
for addr in train_df['address']:
geolocator = Nominatim(user_agent="ram")
location = geolocator.geocode(addr), timeout=100, language = 'en')
city.append(location.address.split(',')[-4])
lat.append(location.latitude)
longi.append(location.longitude)
它returnsNone,可能是因为多次访问。
请帮我推荐一些其他方法来获取数据框 'address' 列的纬度和经度(或其他一些用于相同工作的库)。
问题出在数据集的地址上。如果你使用下面的 try catch 代码,你可以看到数据集中有很多错误的地址。
for addr in train_df['ADDRESS']:
geolocator = Nominatim(user_agent="ram")
location = geolocator.geocode(addr, timeout=10000, language = 'en')
try:
city.append(location.address.split(',')[-4])
lat.append(location.latitude)
longi.append(location.longitude)
except:
print(addr)
例如,地址之一是“Garebhavipalya,Bangalore”。如果您在 google 中搜索,正确的地址是“Garvebhavi Palya,Bangalore”。它是“Garvebhavi Palya”,但数据集显示为“Garebhavipalya,Bangalore”。因此,如果您使用以下代码检查该地址,您可以获得班加罗尔地址,经度和纬度接近数据集的数据。
geolocator = Nominatim(user_agent="ram")
location = geolocator.geocode("Garvebhavi Palya,Bangalore", timeout=100, language = 'en')
print(location.address)
print(location.latitude)
print(location.longitude)
要检查给定数据集的经纬度地址,可以使用反向。
geolocator = Nominatim(user_agent="ram")
location = geolocator.reverse("12.96991,77.59796")
print(location.address)
由于我不熟悉班加罗尔,我不确定数据集的纬度 12.96991 和经度 77.59796 是否是这个“Garebhavipalya,Bangalore”地址。但我认为问题出在数据集的“ADDRESS”上。
顺便说一句,我觉得这个 GeoPy 库非常好。当你在这里问的时候我才知道。感谢您的提问:)