使用pandas和geopy计算两点之间的距离

2024-09-29 01:31:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个如下的熊猫数据框,包括四列,但每行有两个点(lat1,lon1)和(lat2,lon2):

   lat1       lon1        lat2        lon2
=========   =========   =========   =========  
30.172705   31.126725   30.188281   31.132326
30.272805   31.226725   30.288281   31.232326
30.372905   31.326725   30.388281   31.332326
30.472105   31.426725   30.488281   31.432326
30.572205   31.526725   30.588281   31.532326

使用geopy计算每行中提到的(lat1,lon1)和(lat2,lon2)之间的距离的最有效方法是什么


Tags: 数据方法距离geopylat2lat1lon2lon1
2条回答

即使你自己似乎没有做过任何研究,你也可以这样做: 短谷歌搜索结果:https://geopy.readthedocs.io/en/stable/#module-geopy.distance

通过实践,您现在可以相对轻松地了解如何访问熊猫中的DF并应用操作(@wwnde已经展示了这一点)

将这两个基本要素结合起来可以:

import pandas as pd
import numpy as np
from geopy import distance

# Generate some random data (lon, lat must be in (-90, 90)
df = pd.DataFrame(np.random.randint(-90, 90, size=(100, 4)), columns=list(['lo1', 'la1', 'lo2', 'la2']))
print(df)

# applies the distance function as described in the provided link
df['km'] = df.apply(lambda x: distance.distance((x[0], x[1]), (x[2], x[3])), axis=1)
print(df)

此外,我发现this是第一个链接,但没有阅读它,因为解决方案非常简单

正如StackOverflow的CoC所建议的那样,请提供您已经尝试过的,并且具有正确的行为,以便简单地查看google

你的纬度/经度是什么坐标系

让我们试试Euc-squrt(delta(lat)**2+ delta(lon)**2)

 df['dist']=((df.lat1.sub(df.lat2)**2).add(df.lon1.sub(df.lon2)**2))**0.5

相关问题 更多 >