[英]Python generate lat/long points from address
如何在 python 中获取地址并从它们生成经纬度坐标? 我有几个地址想要获得经纬度,但似乎不起作用。
我使用了 geopandas,但它什么也没给我。 我也对user_agent使用什么有点困惑。 这是我的代码,
import pandas as pd
from geopy.geocoders import Nominatim
df2['location_lat'] = ""
df2['location_long'] = ""
geolocator = Nominatim(user_agent="myApp")
for i in df2.index:
try:
#tries fetch address from geopy
location = geolocator.geocode(df2['Location'][i])
#append lat/long to column using dataframe location
df2.loc[i,'location_lat'] = location.latitude
df2.loc[i,'location_long'] = location.longitude
except:
#catches exception for the case where no value is returned
#appends null value to column
df2.loc[i,'location_lat'] = ""
df2.loc[i,'location_long'] = ""
任何帮助表示赞赏。 谢谢。
我没有熊猫,但我认为你可以使用它
代码:
from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent='your_app_name')
addresses = [
'20, Willmannstraße, Fechenheim, Ost, Frankfurt am Main, Hessen, 60386, Deutschland',
'20, Willmannstraße, Fechenheim, Ost, Frankfurt am Main, Hessen, 60386, Deutschland',
'Pöhlen, Schönberg, Sandesneben-Nusse, Herzogtum Lauenburg, Schleswig-Holstein, 22929, Deutschland',
'Pöhlen, Schönberg, Sandesneben-Nusse, Herzogtum Lauenburg, Schleswig-Holstein, 22929, Deutschland',
'Pöhlen, Schönberg, Sandesneben-Nusse, Herzogtum Lauenburg, Schleswig-Holstein, 22929, Deutschland'
]
coordinates = []
for address in addresses:
location = geolocator.geocode(address)
lat, lon = location.latitude, location.longitude
coordinates.append((lat, lon))
print(coordinates)
# output:
[(50.1262402, 8.767057053362574),
(50.1262402, 8.767057053362574),
(53.6805214, 10.4282207),
(53.6805214, 10.4282207),
(53.6805214, 10.4282207)]
希望能帮到你=D
您可以直接在 DataFrame 列上使用apply
:
import pandas as pd
from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent="myApp")
df2 = pd.DataFrame({'Location':
['2094 Valentine Avenue,Bronx,NY,10457',
'1123 East Tremont Avenue,Bronx,NY,10460',
'412 Macon Street,Brooklyn,NY,11233']})
df2[['location_lat', 'location_long']] = df2['Location'].apply(
geolocator.geocode).apply(lambda x: pd.Series(
[x.latitude, x.longitude], index=['location_lat', 'location_long']))
它应该给出:
Location location_lat location_long
0 2094 Valentine Avenue,Bronx,NY,10457 40.852905 -73.899665
1 1123 East Tremont Avenue,Bronx,NY,10460 40.840130 -73.876245
2 412 Macon Street,Brooklyn,NY,11233 40.682651 -73.934353
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.