计算 pandas 数据框的经纬度列之间的距离

calculate distance between latitude longitude columns for pandas data frame

我正在尝试应用此代码:

import h3

coords_1 = (52.2296756, 21.0122287)
coords_2 = (52.406374, 16.9251681)
distance = h3.point_dist(coords_1, coords_2, unit='km')
distance

到 pandas 数据框。这是我不成功的尝试。

data = {'lat1':[52.2296756],
        'long1':[21.0122287],
        'lat2':[52.406374],
        'long2':[16.9251681],      
}
df = pd.DataFrame(data)
df

df['distance'] = = h3.point_dist((df['lat1'], df['long1']), (df['lat2'], df['long2']), unit='km')

非常感谢任何帮助。谢谢!

一切正常,您只需删除第二个“=”

data = {'lat1':[52.2296756],
        'long1':[21.0122287],
        'lat2':[52.406374],
        'long2':[16.9251681],      
}
df = pd.DataFrame(data)
df

df['distance'] =  h3.point_dist((df['lat1'], df['long1']), (df['lat2'], df['long2']), unit='km')

假设您要计算距离的不止一行,您可以按如下方式使用应用:

df['Dist'] = df.apply(lambda row: h3.point_dist((row['lat1'], row['long1']), (row['lat2'], row['long2'])), axis=1)

这将向您的数据框添加一列,类似于以下内容:

      lat1        long1      lat2       long2        Dist
0   52.229676   21.012229   52.406374   16.925168   2.796556
1   57.229676   30.001176   48.421365   17.256314   6.565542 

请注意,我的距离计算可能与您的不一致,因为我使用了虚拟函数进行 h3.point_dist 计算