You need to enable JavaScript to run this app. Folium中Choropleth地图配置key_on参数实现东京数据映射报错
优惠活动
大模型
产品
解决方案
定价
更多

Folium中Choropleth地图配置key_on参数实现东京数据映射报错

Tokyo Choropleth 地理匹配报错修正

原始报错

运行配置的绘图代码后,控制台抛出:

AttributeError: 'NoneType' object has no attribute 'get'

报错核心触发逻辑

代码报错是因为key_on参数的写法不符合folium Choropleth的内置解析规则,导致程序无法正常获取关联字段值:

  • folium的Choropleth组件解析GeoJSON时,会逐一遍历单个Feature对象完成字段匹配,key_on的路径是相对于单个Feature对象的相对路径,不需要从整个FeatureCollection的根节点开始书写路径。
  • 原代码中key_on = 'features.properties.ward_en'使用了复数features,解析器会在单个Feature对象的上下文里查找不存在的features属性,最终取到None值执行后续字典取值操作,直接触发NoneType类别的属性错误。

分步修正操作

  • 第一处核心修正:调整key_on的写法,将原参数里的复数features改为单数feature,正确路径为feature.properties.ward_en
  • 第二处前置校验:提前核对两边关联字段的字符串匹配度,排除空格、大小写、全半角差异导致的匹配失败,校验代码如下:
    geojson_ward_set = set()
    for feature in tokyo_geojson['features']:
        # 检查每个GeoJSON要素是否存在ward_en字段,避免字段缺失
        if 'ward_en' not in feature['properties']:
            print(f"存在缺失ward_en字段的GeoJSON要素:{feature}")
            continue
        geojson_ward_set.add(feature['properties']['ward_en'].strip())
    
    df_ward_set = set(df_tokyo['Municipality'].str.strip())
    
    # 输出两边无法匹配的差异值,提前处理不一致的条目
    print("GeoJSON存在但DataFrame无对应值的要素:", geojson_ward_set - df_ward_set)
    print("DataFrame存在但GeoJSON无对应要素的条目:", df_ward_set - geojson_ward_set)
    
  • 第三处基础校验:确认GeoJSON加载状态正常,检查tokyo_geojson是否为合法的GeoJSON字典结构,确保可以正常访问tokyo_geojson['features'],排除文件读取失败、路径错误导致geo_data为空None的情况。

修正后可运行的代码

tokyo_map.choropleth(
    geo_data = tokyo_geojson,
    data=df_tokyo,
    columns=['Municipality', 'Positive Cases'],
    # 修正后的key_on参数
    key_on = 'feature.properties.ward_en',
    fill_color='BuPu',
    threshold_scale=threshold_scale,
    fill_opacity=0.6, 
    line_opacity=0.2,
    legend_name='Corona Cases in Tokyo',
    highlight = True,
    reset=True
)

tokyo_map

补充说明:如果修正key_on参数后仍出现匹配异常,优先核对两边关联值的拼写差异,比如GeoJSON里的ward_en是否存在多余缩写、尾缀,和DataFrame的Municipality值是否完全一致。


内容的提问来源于stack exchange,提问作者Jaswanth sai G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 16:45:02