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

如何编写函数计算两城市距离?geopy坐标选取求助

计算两座城市间距离的函数实现

你可以通过以下方式完善函数,利用geopy.distance计算千米级距离:

首先确认数据集的列名——从提供的concap.csv来看,纬度和经度对应的列是Latitude和Longitude。我们可以通过DataFrame的索引直接提取目标城市的坐标,再传入geopy的距离计算方法。

完整代码实现

import pandas as pd
from geopy import distance

capitals = pd.read_csv('https://raw.githubusercontent.com/j-rossi-nl/teaching-data/main/2022_ITP/concap.csv')
capitals.set_index('CapitalName', inplace=True)

def cities_distance(city_from: str, city_to: str = 'Amsterdam', cities: pd.DataFrame = capitals)->float:
    # 获取两座城市的经纬度坐标
    try:
        coord_from = (cities.loc[city_from, 'Latitude'], cities.loc[city_from, 'Longitude'])
        coord_to = (cities.loc[city_to, 'Latitude'], cities.loc[city_to, 'Longitude'])
    except KeyError as e:
        raise ValueError(f"未找到城市: {e.args[0]}")
    
    # 计算距离并返回千米数值
    return distance.distance(coord_from, coord_to).kilometers

关键步骤说明

  • 提取坐标:因为已经将CapitalName设为DataFrame的索引,所以用cities.loc[城市名, 列名]可以直接获取对应城市的纬度和经度,将它们组成元组(纬度在前,经度在后,符合geopy的参数要求)。
  • 计算距离:distance.distance()接受两个坐标元组,返回一个Distance对象;调用.kilometers属性就能直接得到以千米为单位的距离值。
  • 异常处理:添加try-except捕获KeyError,可以在输入不存在的城市名时给出明确提示,避免程序直接崩溃。

使用示例

# 计算北京到阿姆斯特丹的距离
print(cities_distance("Beijing"))
# 计算伦敦到巴黎的距离
print(cities_distance("London", "Paris"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:15:30