You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas结合Geopy计算DataFrame相邻行坐标的距离?

计算Pandas DataFrame中相邻行地理坐标的距离(Geopy实现)

最简实现方案

直接利用Pandas的shift()方法获取下一行的坐标,结合apply()调用Geopy的geodesic计算距离:

import pandas as pd
import geopy.distance

# 原始数据初始化
r = {'poly':[(49.419453, 0.232884),(49.41956, 0.23269),(49.41956, 0.23261),(49.41953, 0.23255),(49.41946, 0.23247)]}
df = pd.DataFrame(r)

# 获取下一行的坐标(最后一行会得到NaN)
df['next_poly'] = df['poly'].shift(-1)

# 计算相邻行的距离(单位:米),最后一行无后续行,设为0
df['dist'] = df.apply(
    lambda row: geopy.distance.geodesic(row['poly'], row['next_poly']).m 
    if pd.notna(row['next_poly']) 
    else 0,
    axis=1
)

# 可选:删除临时辅助列
df = df.drop('next_poly', axis=1)

print(df)

补充优化(大数据量场景)

如果数据量较大,列表推导式比apply()性能更优,可替代使用:

df['dist'] = [
    geopy.distance.geodesic(df['poly'].iloc[i], df['poly'].iloc[i+1]).m 
    for i in range(len(df)-1)
] + [0]

关键说明

  • shift(-1):将坐标列整体上移一行,让当前行直接匹配下一行的坐标,最后一行因无后续数据会生成NaN。
  • 计算时通过pd.notna()过滤空值,避免报错;最后一行的距离值可根据需求调整为NaN或其他默认值。

内容的提问来源于stack exchange,提问作者JK2018

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 00:57:23