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

Python循环处理两个CSV文件计算坐标距离输出合并结果

现有代码问题

  • 循环内部重复创建空DataFrame并覆盖写入ctlg.csv,最终仅保留最后一次计算结果
  • 未将距离值追加到原始catalog数据集对应行,未保留原始数据
  • 双重iterrows遍历性能差,数据量较大时运行效率极低

修改后可运行代码

import pandas as pd
import geopy.distance

# 读取原始数据
ctlg = pd.read_csv('catalog.csv', sep=',')
sts = pd.read_csv('station.csv', sep=',')

# 遍历每个站点,批量计算所有catalog点到当前站点的距离并追加为新列
for sts_idx, sts_row in sts.iterrows():
    # 请替换为你station.csv中实际的经纬度列名,用列名取值比列索引更稳定
    sts_lat, sts_lon = sts_row['latitude'], sts_row['longitude']
    ctlg[f'distance_sts{sts_idx+1}'] = ctlg.apply(
        # 示例默认返回公里数值,要获取米为单位可将.km修改为.m
        lambda x: geopy.distance.distance((x['latitude'], x['longitude']), (sts_lat, sts_lon)).km,
        axis=1
    )

# 所有列计算完成后一次性导出,保留全部原始字段+新增距离列
ctlg.to_csv('ctlg.csv', index=False, encoding='utf-8-sig')

补充说明

  • 代码默认保留catalog.csv所有原始列,新增的29个距离列会按站点顺序依次追加,完全匹配你需要的列结构
  • 如果station.csv中存在站点名称字段,可将距离列名替换为站点名称,可读性更强

内容的提问来源于stack exchange,提问作者Francesco Alexandr Colosimo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:45:03