使用城市和州列查找纬度和经度

2024-09-27 20:19:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有“城市”和“州”字符串的列。我尝试使用geopy library中的geocoder计算纬度和经度,但由于超出了请求数,因此超时。数据集中大约有85895行。所以我对“CITY_STATE”列进行了值计算,共有1340个值。是否有一种方法可以找到1340个值的纬度和经度,然后将这些值与相应的“城市”和“州”进行映射

from opencage.geocoder import OpenCageGeocode
key = 'my_key'  # get api key from : https://opencagedata.com
geocoder = OpenCageGeocode(key)
list_lat = []   # create empty lists

list_long = []
for index, row in train.iterrows(): # iterate over rows in dataframe



City = row['CITY']
State = row['STATE']       
query = str(City)+','+str(State)

results = geocoder.geocode(query)   
lat = results[0]['geometry']['lat']
long = results[0]['geometry']['lng']

list_lat.append(lat)
list_long.append(long)

# create new columns from lists    

train['lat'] = list_lat   

test['lon'] = list_long

Tags: keyfromcitycreateresultslonglistrow
1条回答
网友
1楼 · 发布于 2024-09-27 20:19:52

我认为您可以将^{}与自定义函数一起使用,并将两列连接到系列s

s = train['CITY'].astype(str) + ', ' + train['STATE'].astype(str)

def func(x):
    results = geocoder.geocode(x.name) 
    x['lat'] = results[0]['geometry']['lat']
    x['lon'] = results[0]['geometry']['lng']
    return x

train = train.groupby(s).apply(func)

相关问题 更多 >

    热门问题