将数据帧值与另一个数据帧值进行比较



我有两个数据帧

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等。如果你想将aaacccddd进行比较,我无法想出一个不使用for循环的快速答案。

希望它能帮助你解决这个问题,祝你好运。

相关内容

  • 没有找到相关文章

最新更新