python-3.x - 如何使用 Pandas 数据框中的纬度和经度计算距离?

标签 python-3.x pandas geolocation latitude-longitude

我有一个具有两列纬度和经度和 863 行的数据框,因此每行都有一个由纬度和经度定义的点坐标。现在我想计算所有行之间的距离(以公里为单位)。我正在使用以下引用链接来获取纬度和经度对之间的距离。如果有几行,我可以使用引用链接完成。但是我有大行,我想我需要一个循环来解决问题。由于我是 python 的新手,我无法创建一个逻辑来循环这个想法。

引用链接:
Getting distance between two points based on latitude/longitude

我的数据框如下所示:

read_randomly_generated_lat_lon.head(3)
Lat          Lon
43.937845   -97.905537
44.310739   -97.588820
44.914698   -99.003517

最佳答案

你可以使用 scikit-learn 来做到这一点:

import numpy as np
from sklearn.neighbors import DistanceMetric

dfr = df.copy()
dfr.Lat = np.radians(df.Lat)
dfr.Lon = np.radians(df.Lon)
hs = DistanceMetric.get_metric("haversine")
(hs.pairwise(dfr)*6371) # Earth radius in km

输出:
array([[  0.        ,  48.56264446, 139.2836099 ],
       [ 48.56264446,   0.        , 130.57312786],
       [139.2836099 , 130.57312786,   0.        ]])

请注意,输出是一个方阵,其中元素 (i,j) 是第 i 行和第 j 行之间的距离

这似乎比使用带有自定义 haversine 的 scipy 的 pdist 更快功能

关于python-3.x - 如何使用 Pandas 数据框中的纬度和经度计算距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55464087/

相关文章:

python - 为什么QWidget在继承时表现不同

Python写二进制

python - TypeError : mean() got an unexpected keyword argument 'dtype' # Pandas. 数据帧

python - 当数据框的列包含多个值时选择数据框的行

iphone - 有没有办法在我的应用程序中不使用 CLLocationManager 委托(delegate)来获取当前位置

cordova - Phonegap 3.3/Cordova iOS 地理位置未找到

python-3.x - 如何使用scapy像wireshark一样抓取流量?

python - 在 Python 中渲染一棵树

python - Pandas 就地操作 DataFrame 与不就地操作(就地=True 与 False)

地理定位 - 它是如何工作的?