【发布时间】:2018-10-20 20:26:39
【问题描述】:
我正在尝试从一个数据帧计算测地距离,该数据帧由四列纬度和经度数据组成,大约有 300 万行。我使用 apply lambda 方法来完成,但完成任务需要 18 分钟。有没有办法使用带有 NumPy 数组的矢量化来加快计算速度?谢谢你的回答。
我的代码使用 apply 和 lambda 方法:
from geopy import distance
df['geo_dist'] = df.apply(lambda x: distance.distance(
(x['start_latitude'], x['start_longitude']),
(x['end_latitude'], x['end_longitude'])).miles, axis=1)
更新:
我正在尝试这段代码,但它给了我错误:ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()。如果有人可以提供帮助,请不胜感激。
df['geo_dist'] = distance.distance(
(df['start_latitude'].values, df['start_longitude'].values),
(df['end_latitude'].values, df['end_longitude'].values)).miles
【问题讨论】:
-
Geopy 距离例程目前不支持矢量化。也许测地线例程的作者@cffk 可能会在那里提出解决方案?此问题正在github.com/geopy/geopy/issues/189 中进行跟踪
标签: python numpy coordinates vectorization geopy