我对numpy/pandas和向量化计算都很陌生。我正在处理一个数据任务,其中有两个数据集。数据集1包含一系列带有经度、纬度和变量A的地点列表。数据集2也包含一系列带有经度和纬度的地点列表。对于数据集1中的每个地点,我想计算它与数据集2中所有地点的距离,但我只想得到小于变量A值的数据集2中地点的数量。请注意,这两个数据集都非常大,因此我需要使用向量化操作来加快计算速度。
例如,我的数据集1可能如下所示:
然而,这只给出了总行数,但并没有满足我的要求的行数。
有人能指导我如何使代码运行吗?
例如,我的数据集1可能如下所示:
id lon lat varA
1 20.11 19.88 100
2 20.87 18.65 90
3 18.99 20.75 120
我的数据集2可能如下所示:
placeid lon lat
a 18.75 20.77
b 19.77 22.56
c 20.86 23.76
d 17.55 20.74
针对数据集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)
然而,这只给出了总行数,但并没有满足我的要求的行数。
有人能指导我如何使代码运行吗?