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

folium绘制Choropleth分级统计图报NoneType对象不可下标错误如何解决

问题排查与解决方案
  • 参数拼写错误:folium.Choropleth指定数据列的参数为columns,你的代码中误写为column,缺少末尾的s,导致程序读取列配置时拿到None值,触发下标访问报错,这是本次报错的直接原因。
  • 列名大小写不匹配:你提到CSV中数值列名为Count(首字母大写),但代码中筛选列、传入参数时都用了小写的count,会导致读取不到对应列,后续数值匹配失败。
  • GeoJSON属性路径错误:key_on参数需要指定GeoJSON中匹配字段的完整路径,你使用的GeoJSON数据中alpha2属于feature的properties属性,因此不能直接写alpha2,需要补全路径为feature.properties.alpha2。
  • 数据未聚合:你的原始数据每个联系人对应一行,同一国家会存在多条记录,Choropleth需要每个地理区域仅对应唯一数值,因此需要提前按国家编码分组求和Count列,避免数据匹配异常。
修正后参考代码
import pandas as pd
import requests
import folium

# 读取数据
df = pd.read_csv(r"file with some data and a column of alpha_2 country codes.csv")
# 统一列名小写,避免大小写匹配问题
df.columns = df.columns.str.lower()
# 按国家编码分组求和count,得到每个国家的总数值
map_data = df.groupby('alpha_2_code', as_index=False)['count'].sum()

# 获取GeoJSON
geojson_url = ("https://raw.githubusercontent.com/stefangabos/world_countries/master/data/en/world.json")
response = requests.get(geojson_url)
geojson = response.json()

# 绘制地图
M = folium.Map(location = [20,10], zoom_start = 2)
folium.Choropleth(
    geo_data=geojson,
    data=map_data,
    # 修正参数名column→columns
    columns = ["alpha_2_code","count"],
    # 补全属性路径
    key_on="feature.properties.alpha2",
    fill_color="BuPu",
    fill_opacity=0.7,
    line_opacity=0.2
).add_to(M)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:54:04