如何使用Lambda函数在python中反转地址解析?

时间:2019-06-02 01:06:42

标签: python python-3.x

我正在尝试从经度和纬度获取邮政编码。 具体来说,我尝试使用lambda函数并将数据帧传递给它。我从here下载了tl_2016_us_zcta510.shp文件。

import pandas as pd
import geopandas as gpd
from shapely.geometry import Point
import numpy as np

data = [['loc1', 37.772972107, -122.232276917], ['loc2', 42.352710724, -83.099243164], ['loc3', 33.828399658, -86.268417358]]
df = pd.DataFrame(data, columns=['location_key', 'latitude', 'longitude']) 
gdf_locations = gpd.read_file('/Users/admin/Downloads/tl_2016_us_zcta510/tl_2016_us_zcta510.shp')
centroids = gdf_locations.centroid
# transform shapely points to np array
point_array = []
for centroid in centroids:
    point_array.append([centroid.x, centroid.y])
point_array = np.array(point_array)

现在,我需要将纬度和经度传递给地址解析器并获取邮政编码。在这里,我试图创建一个lambda函数,该函数可以遍历我的数据框并为每个纬度和经度组合输出一个邮政编码。

random_lat_lon = array([ -8.37429385, -23.19458311])
distance, index = spatial.cKDTree(point_array).query(random_lat_long)
zip_codes = gdf_locations.loc[index, 'GEOID10']

如何在我的数据框中递归地执行此操作,并获取带有附加邮政编码的新数据框。 任何帮助将不胜感激。

0 个答案:

没有答案