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

Pandas计算DataFrame每行经纬度到固定坐标点的公里距离

实现方法

直接使用pandas的逐行应用apply方法配合geopy即可完成批量距离计算,注意经纬度传入顺序必须是*(纬度, 经度)*,和geopy的参数要求保持一致,不要写反顺序。

完整可运行代码

import pandas as pd
import geopy.distance

# 若你已经读取了现有DataFrame,可跳过这段构造测试数据的代码
df = pd.DataFrame({
    "code": ["01", "02", "03", "04", "05", "06"],
    "latitude": [40.410323, 41.490604, 39.287817, 38.594316, 36.900799, 36.541667],
    "longitude": [-3.993046, 1.696572, -0.435448, -0.128489, -3.423063, -4.625]
})

# 定义固定目标点坐标
fixed_coords = (36.7196, -4.42002)

# 逐行计算距离,生成新列
df["km_to_fixed_coords"] = df.apply(
    lambda row: geopy.distance.distance((row["latitude"], row["longitude"]), fixed_coords).km,
    axis=1
)

# 打印验证结果
print(df)

代码说明

  • axis=1参数指定apply按行遍历DataFrame,每次传入一行的Series对象,可直接通过列名提取对应经纬度值
  • 计算结果直接赋值给新列km_to_fixed_coords,返回值单位默认为公里,和你提供的单点计算逻辑完全一致
  • 运行结果和你给出的预期输出基本匹配,仅第6行因为示例原始数据经度(-4.625)和预期结果对应行的经度(-4.625342)存在微小精度差,计算值会有极小幅偏差,替换为你的真实业务数据即可得到完全一致的结果

性能提示

  • 该写法在数据量10万行以内时运行效率足够日常使用
  • 如果你的数据量达到百万级,逐行apply速度会明显变慢,可以替换为pyproj等支持矢量计算的大地距离库实现批量计算,效率可提升数十倍

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:57:11