【问题标题】:Prepare data for Haversine distance为Haversine距离准备数据
【发布时间】:2019-11-11 11:49:26
【问题描述】:

我想为id 的每个唯一值计算haversine 距离:

from haversine import haversine, Unit

data = 

id latitude longitude 
a        11        22
a        33        44
b        55        66
b        77        88
c        99        11
c        12        13

start = (11,22) # (lat, lon)
end = (33,44)
haversine(start,end)*1000

如何为它创建一个循环?因为真实数据有2000+ids

关于 Hvaersine 有很多很好的问题,但没有关于数据准备的答案。这个问题主要是关于数据准备的

【问题讨论】:

    标签: python pandas haversine


    【解决方案1】:

    2000 并不多,你可以用一个简单的 python 循环来处理它。但如果您更喜欢 pandas-native 方法,您可以执行以下操作:

    df.groupby('id').apply(lambda g: haversine(g.iloc[0], g.iloc[1])) * 1000
    

    考虑到您的数据集对于每个 id 始终有一对点。

    输出:

    id
    a    3.320380e+06
    b    2.601419e+06
    c    9.673377e+06
    

    【讨论】:

    • 顺便说一句,你的第一个代码更快haversine = data.set_index('id_easy').apply(tuple,axis=1).groupby(level=0).apply(lambda x: haversine(x.iat[0],x.iat[1])*1000)
    猜你喜欢
    • 2023-03-17
    • 2016-04-06
    • 2021-06-21
    • 1970-01-01
    • 2010-10-09
    相关资源
    最近更新 更多