我有超过一百万行的经度位置。我的目标是对照具有中央纬度经度的大约43000个邮政编码的数据集检查每行。
我想使用大型ZipCodes列表来计算每行之间的正弦距离。然后,我想获取最接近的纬度/经度,并将其或相应的邮政编码返回最左侧的帧(本质上,将最接近的ZipCode赋予大帧中的纬度/经度。
我已经尝试了多种方法,包括向量化的haversine函数以及遍历每一行,进行计算并移至下一行,但是我无法完全使它们起作用。考虑到我的数据量很大,我知道单单遍历每一行并进行计算是行不通的。我需要一个新的解决方案。我认为可能涉及矢量化。
这是我的数据的一些示例框架。 df是我要计算的最大帧距zip_list的最小距离,并将相应的邮政编码返回到大帧。
df = pd.DataFrame(np.array([[42.801104,-76.827879],[38.187102,-83.433917],
[35.973115,-83.955932]]), columns = ['Lat', 'Long'])
zip_list = pd.DataFrame(np.array([[49544, 42.999561,-85.75371],[49648,
45.000254,-85.3651],[49654, 45.023384,-85.75697],[50265,
41.570916,-93.73568]]), columns = ['ZipCode', 'Latitude', 'Longitude'])
我想将最小距离的邮政编码返回到df帧中的相应行。
任何想法都很棒。我是矢量化和numpy / pandas的初学者。