【发布时间】:2021-05-08 20:28:50
【问题描述】:
我有一个包含 15k 行的数据框,其中包含坐标和位置名称(主要是企业)
| spot | lat1 | l1 | place | lat2 | lon2 |
|---|---|---|---|---|---|
| 1 | 41,1808128356934 | -8,53291034698486 | A | 41.146749 | -8.613889 |
| 1 | 41,1808128356934 | -8,53291034698486 | B | 41.146105 | -8.609868 |
| 2 | 41,1491432189941 | -8,61034202575684 | A | 41.146749 | -8.613889 |
| 2 | 41,1491432189941 | -8,61034202575684 | B | 41.146105 | -8.609868 |
我一直在尝试在两个坐标之间进行减法以找到距离(以米为单位),然后仅选择它们之间距离较小的地点和地点。
这是我尝试使用的代码:
df['X_diff'] = df['lon1'] - df['lon2']
df['Y_diff'] = df['lat1'] - df['lat2']
df['dist'] = np.linalg.norm(df[['X_diff', 'Y_diff']], axis=1)
我也意识到坐标的类型是不同的。
spot object
lat1 object
lon1 object
place object
lat2 float64
lon2 float64
dtype: object
如何找到距离并只选择最近的?
【问题讨论】:
-
你可以使用
haversine公式,以防距离太大,地球曲率进入画面。 -
感谢您的建议。我读过它并且能够做到。
标签: python pandas dataframe coordinates distance