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

Streamlit地图应用出现KeyError: 'latitude'错误求助

解决Streamlit地图应用的KeyError: 'latitude'问题

可能的问题原因及对应解决方法:

  • 列名匹配问题
    确认CSV文件中的latitude、longitude列名和代码中完全一致,注意大小写、前后空格(比如不要是Latitude或 latitude这类带格式差异的列名)。可以在读取CSV后先打印列名排查:

    def display_map(file):
        data = pd.read_csv(file)
        print(data.columns.tolist())  # 输出所有列名,核对是否存在目标列
        # 后续代码...
    
  • 代码拼写错误
    代码里的data.itterrows()是拼写错误,正确写法是data.iterrows(),这个错误会导致循环逻辑无法正常执行,需优先修正。

  • CSV分隔符不匹配
    如果你的CSV文件使用分号或其他符号作为分隔符,读取时需要指定sep参数:

    data = pd.read_csv(file, sep=';')  # 根据实际分隔符调整
    
  • 列名含隐藏空格
    可以统一清理列名前后的空格,避免因列名带空格导致的KeyError:

    data = pd.read_csv(file)
    data.columns = data.columns.str.strip()  # 去除所有列名的前后空格
    
  • 弹窗列名的空格问题
    代码中row['APPLICATION ']末尾带空格,需确认CSV中对应列名是否一致,或者改用row.get()避免报错:

    popup_text = row.get('APPLICATION', '无属性信息')  # 找不到列时返回默认值
    

修正后的完整代码:

import folium
from folium import Map
import pandas as pd
import streamlit as st

def display_map(file):
    data = pd.read_csv(file)
    # 清理列名前后空格
    data.columns = data.columns.str.strip()
    # 提前校验必要列是否存在
    if 'latitude' not in data.columns or 'longitude' not in data.columns:
        st.error("CSV文件缺少latitude或longitude列,请检查文件")
        return
    m = Map(location=[data['latitude'].mean(), data['longitude'].mean()], zoom_start=13)
    # 修正iterrows拼写错误
    for i, row in data.iterrows():
        # 安全获取弹窗内容
        popup_text = row.get('APPLICATION', '无属性信息')
        folium.Marker(
            location=[row['latitude'], row['longitude']],
            popup=popup_text,
            icon=folium.Icon(color='red')
        ).add_to(m)
    st.write(m)

def main():
    file = st.file_uploader("Upload a CSV File", type=["csv"])
    if file is not None:
         display_map(file)

if __name__ == '__main__':
     main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 13:05:27