使用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里有少量脏数据的情况)
如果CSV里有无效值(比如空单元格、字母),可以先做数据清洗:lat = float(row["Latitude"]) lon = float(row["Longitude"])# 把无效值转成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
相关产品推荐
相关产品推荐

