我是numpy / pandas和矢量化计算的新手。我正在执行数据任务,其中有两个数据集。数据集1包含一个经度和纬度的位置列表以及一个变量A。数据集2还包含一个经度和纬度的位置列表。对于数据集1中的每个位置,我想计算其到数据集2中所有位置的距离,但我只想获得数据集2中小于变量A的值的位置计数。数据集非常大,因此我需要使用向量化运算来加快计算速度。
例如,我的数据集1可能如下所示:
id lon lat varA
1 20.11 19.88 100
2 20.87 18.65 90
3 18.99 20.75 120
Run Code Online (Sandbox Code Playgroud)
我的数据集2可能如下所示:
placeid lon lat
a 18.75 20.77
b 19.77 22.56
c 20.86 23.76
d 17.55 20.74
Run Code Online (Sandbox Code Playgroud)
然后对于数据集1中的id == 1,我想计算其到数据集2中所有四个点(a,c,c,d)的距离,并且我想知道有多少距离小于对应的距离varA的值。例如,计算出的四个距离为90、70、120、110,而varA为100。则该值应为2。
我已经有一个向量化函数来计算两对坐标之间的距离。假设函数(haversine(x,y))正确实现,我有以下代码。
dataset2['count'] = dataset1.apply(lambda x:
haversine(x['lon'],x['lat'],dataset2['lon'], dataset2['lat']).shape[0], axis
= 1)
Run Code Online (Sandbox Code Playgroud)
但是,这给出的是行的总数,但不能满足我的要求。
谁能指出我如何使代码正常工作?