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

如何在Python中使用haversine库计算两组位置的距离矩阵

解决方法

以下是完全不用复杂语法、新手友好的实现步骤,不管你的两个数据集有多少条数据,都可以自动处理不用手动录入位置:


步骤1:导入需要的依赖库

如果还没装haversine,先运行pip install haversine安装即可,之后导入需要的模块:

import pandas as pd
from haversine import haversine_vector, Unit

步骤2:读取你的两个位置数据集

默认你已经把两个结构一致的位置表格存为了csv文件,直接替换成你自己的文件路径读取即可:

# 小数据集
df_small = pd.read_csv("你的小数据集文件路径.csv")
# 大数据集
df_large = pd.read_csv("你的大数据集文件路径.csv")

步骤3:生成符合函数要求的经纬度列表

用最基础的for循环实现,不需要任何复杂语法:

# 处理小数据集,生成(纬度, 经度)格式的元组列表
list_small = []
for row_index in range(len(df_small)):
    lat = df_small.loc[row_index, "lat"]
    lon = df_small.loc[row_index, "long"]
    list_small.append( (lat, lon) )

# 用同样的逻辑处理大数据集
list_large = []
for row_index in range(len(df_large)):
    lat = df_large.loc[row_index, "lat"]
    lon = df_large.loc[row_index, "long"]
    list_large.append( (lat, lon) )

步骤4:调用函数计算所有两两位置的距离

直接用comb=True参数就能自动计算两个列表所有位置的组合距离,不用手动遍历:

# 结果矩阵的每一行对应小数据集的一个位置,每一列对应大数据集的一个位置,单位为公里
distance_matrix = haversine_vector(list_small, list_large, Unit.KILOMETERS, comb=True)

可选:生成带位置名的直观结果表

如果想要直接查看具体两个地点的距离,可以把结果转成带行列名的表格,还能直接存为本地文件:

# 行名是小数据集的地点名称,列名是大数据集的地点名称
distance_result = pd.DataFrame(
    distance_matrix,
    index = df_small["location"].values,
    columns = df_large["location"].values
)

# 打印查看结果
print(distance_result)
# 保存为csv文件到本地
distance_result.to_csv("所有位置两两距离结果.csv")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:06:02