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

使用Python的folium创建地图时出现错误求助

解决你的Folium地图报错问题

咱们一步一步来搞定这两个棘手的报错:

1. 先处理 KeyError: 'Latitude'

这个错误直白说就是——你的CSV文件里找不到叫"Latitude"的列,大概率是这几种情况:

  • 列名大小写不匹配:比如实际是小写的latitude,或者列名前后带空格(比如 Latitude)
  • 列名拼写错误:比如写成了Lat或者Latitute(少了个字母d)
  • CSV文件路径或内容不对:先确认datafile.csv确实在当前代码运行的目录里,或者直接打印所有列名看看真实情况:
    print(cuny.columns.tolist())
    
    拿到真实列名后,把代码里的row["Latitude"]改成对应正确的名称就行。

2. 再解决 TypeError: 'str' object cannot be interpreted as an integer

这个错误是因为从CSV读出来的经纬度是字符串类型,但folium绘制地图需要的是数字(整数或浮点数)。解决方法有两种:

  • 方法一:读取CSV时直接指定数据类型
    cuny = pd.read_csv('datafile.csv', dtype={'Latitude': float, 'Longitude': float})
    
  • 方法二:在循环里手动转换类型(适合CSV里有少量脏数据的情况)
    lat = float(row["Latitude"])
    lon = float(row["Longitude"])
    
    如果CSV里有无效值(比如空单元格、字母),可以先做数据清洗:
    # 把无效值转成NaN,再删掉这些行
    cuny['Latitude'] = pd.to_numeric(cuny['Latitude'], errors='coerce')
    cuny['Longitude'] = pd.to_numeric(cuny['Longitude'], errors='coerce')
    cuny = cuny.dropna(subset=['Latitude', 'Longitude'])
    

修正后的完整示例代码

import folium
import pandas as pd

# 读取CSV并处理数据
cuny = pd.read_csv('datafile.csv')
# 先确认列名是否正确
print("CSV所有列名:", cuny.columns.tolist())
# 转换经纬度为数值类型,处理无效值
cuny['Latitude'] = pd.to_numeric(cuny['Latitude'], errors='coerce')
cuny['Longitude'] = pd.to_numeric(cuny['Longitude'], errors='coerce')
# 移除包含空值的行
cuny = cuny.dropna(subset=['Latitude', 'Longitude'])

# 创建地图对象
mapCUNY = folium.Map(location=[40.768731, -73.964915])
# 循环添加标记
for index, row in cuny.iterrows():
    lat = row["Latitude"]
    lon = row["Longitude"]
    name = row["你要显示的名称列"]  # 替换成你CSV里的名称列名
    folium.Marker([lat, lon], popup=name).add_to(mapCUNY)

# 保存地图HTML文件
mapCUNY.save('cuny_campus_map.html')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:15:52