Tah*_*lam 2 python latitude-longitude geopy pandas geopandas
如何在 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'] = ""
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏。谢谢。
您可以apply直接在 DataFrame 列上使用:
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']))
Run Code Online (Sandbox Code Playgroud)
它应该给出:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9873 次 |
| 最近记录: |