我有两个数据帧
Dataframe
name LAT LONG
0 AAA XX.XX XX.XX
1 BBB XX.XX XX.XX
2 CCC XX.XX XX.XX
3 DDD XX.XX XX.XX
Dataframe b
name LAT LONG
0 EEE XX.XX XX.XX
1 FFF XX.XX XX.XX
2 GGG XX.XX XX.XX
3 HHH XX.XX XX.XX
现在我想创建一个新的数据帧,包含数据帧a中的所有点,其中数据帧a中的点与数据帧b中的点之间的距离小于X米。
我已经使用嵌套的for循环来实现这一点,但它需要太多的时间。我用了公式geopy.distance。距离(coords_1 coords_2 .meters)计算距离。
任何建议都会很有帮助的!我不熟悉地理也不熟悉LAT/LONG但是如果我有两个坐标并且想要df中的点足够接近另一个df中的点我会这样做
data1 = [['aaa', 1, 2], ['bbb', 3, 5]]
data2 = [['ccc', 1, 8], ['ddd', 3, 9]]
columns_names = ['name', 'LAT', 'LONG']
df1 = pd.DataFrame(data1, columns=column_names)
df2 = pd.DataFrame(data2, columns=column_names)
distance_of_interest = 6 # or 1 in your case
df3 = pd.DataFrame(df1[np.sqrt((df1.LAT-df2.LAT)**2 + (df1.LONG - df2.LONG)**2) < distance_of_interest],
columns=column_names)
df3 >
name LAT LONG
1 bbb 3 5
虽然这里假设点aaa
对应ccc
等。如果你想将aaa
与ccc
和ddd
进行比较,我无法想出一个不使用for循环的快速答案。
希望它能帮助你解决这个问题,祝你好运。