绘制Choropleth地图时触发TypeError错误,寻求解决方法
解决Choropleth地图的TypeError问题
错误原因
这个错误是因为Plotly在匹配DataFrame数据与GeoJSON地理数据时,使用了非法的键类型。核心原因是未明确指定GeoJSON中用于匹配的字段,导致Plotly内部尝试用错误的键进行匹配;或者DataFrame的id列与GeoJSON中的标识字段不匹配。
解决方案
1. 确认GeoJSON的匹配字段
你使用的阿根廷省份GeoJSON中,每个地理特征的properties字段包含codigo_indec(省份编码)、nombre(省份名称)等标识项,需要和DataFrame的id列内容对应。
2. 修正代码
- 补充缺失的库导入(
pandas和plotly.express) - 指定
featureidkey参数,明确GeoJSON中用于匹配的字段 - 确保DataFrame的
id列与GeoJSON字段类型一致
修正后的代码示例:
import pandas as pd import requests import plotly.express as px # 读取CSV数据 df3 = pd.read_csv('potenciar-trabajo-total-titulares-2022-10-01.csv', low_memory=False) # 获取阿根廷省份地理数据 repo_url = 'https://infra.datos.gob.ar/catalog/modernizacion/dataset/7/distribution/7.12/download/provincias.geojson' ar_regions_geo = requests.get(repo_url).json() # 确保id列类型与GeoJSON匹配(如果GeoJSON的codigo_indec是字符串) df3['id'] = df3['id'].astype(str) # 生成Choropleth地图 fig = px.choropleth( df3, locations="id", geojson=ar_regions_geo, color="titulares", # 指定GeoJSON中用于匹配的字段,根据你的DataFrame id列内容选择 featureidkey="properties.codigo_indec" # 如果id列是省份名称,改用:featureidkey="properties.nombre" ) fig.show()
3. 额外检查点
- 确保DataFrame的
id列没有空值或异常值 - 如果用省份名称匹配,要保证大小写、重音符号完全一致(比如“Buenos Aires”和“buenos aires”会匹配失败)
内容的提问来源于stack exchange,提问作者juan esteban arilla
相关产品推荐
相关产品推荐

