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

Python中基于现有列映射值至新增DataFrame列及CSV城市地理编码需求

通用CSV地理编码工具实现方案

我正在开发一款能处理任意含城市列CSV的通用地理编码工具,目标是把城市名转换成对应的纬度(Latitudes)和经度(Longitudes)。结合你给出的示例CSV,我梳理了一套可行的实现步骤,分享给你:

示例CSV内容

Time,M1,M2,M3,CityName
temp,num,num,num,loc
20-May-13,19,20,0,delhi
20-May-13,25,42,7,agra
20-May-13,23,35,4,mumbai
20-May-13,21,32,3,delhi
20-May-13,17,27,1,mumbai
20-May-13,16,40,5,delhi

核心实现步骤

1. 提取城市列的唯一值

这一步是为了减少重复的地理编码请求,提升效率并避免浪费API配额:

  • 读取CSV文件后,通过第二行的变量类型标记,自动识别出loc类型的列(示例中为CityName)
  • 从该列中提取所有不重复的城市名称,比如示例里的delhi、agra、mumbai

2. 对唯一城市执行地理编码

拿到唯一城市列表后,调用地理编码服务完成转换:

  • 针对每个唯一城市发起编码请求,将结果存储为键值对结构(城市名对应经纬度),比如:
    geocode_mapping = {
        "delhi": (28.6139, 77.2090),
        "agra": (27.1767, 78.0081),
        "mumbai": (19.0760, 72.8777)
    }
    
  • 加入异常处理逻辑:比如城市名无法识别时,标记为None或NaN,避免整个流程中断

3. 将经纬度合并回原CSV

遍历原CSV的每一行,根据城市名匹配对应的经纬度,新增Latitude和Longitude列:

Time,M1,M2,M3,CityName,Latitude,Longitude
temp,num,num,num,loc,coord,coord
20-May-13,19,20,0,delhi,28.6139,77.2090
20-May-13,25,42,7,agra,27.1767,78.0081
20-May-13,23,35,4,mumbai,19.0760,72.8777
20-May-13,21,32,3,delhi,28.6139,77.2090
20-May-13,17,27,1,mumbai,19.0760,72.8777
20-May-13,16,40,5,delhi,28.6139,77.2090

通用化适配要点

  • 动态列识别:依赖CSV第二行的类型标记,自动定位需要地理编码的列,适配任意结构的CSV
  • 全量数据保留:处理过程中不修改原有列的内容,仅新增经纬度列
  • 容错机制:对编码失败的城市做特殊标记,保证工具能完整处理整个CSV文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:34:10