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

使用Folium绘制Choropleth地图时报TypeError: ufunc 'isnan' not supported如何解决

错误原因

你遇到的TypeError: ufunc 'isnan' not supported报错,根源是Folium处理分级色彩的数值列时,你传入的men列不是合法的数值类型:

  • 读取csv后men列可能因为包含千分位逗号、空格、特殊字符,被pandas识别为object(字符串)类型
  • numpy的isnan方法仅支持数值类型输入,对字符串类型会直接触发类型错误
修复方案

在读取csv文件后、调用folium.Choropleth前,添加对men列的清理转换逻辑即可,步骤如下:

  1. 把men列的所有内容转为字符串,清除千分位逗号、首尾空格
  2. 将清理后的内容强制转为数值类型,无法转换的异常值统一设为空值
  3. 可选删除men列为空的行,避免后续地图渲染出现空白异常

修复后的完整代码如下:

import folium
import pandas as pd

geojson_path = "map.geojson"

m = folium.Map(location = [42.688534, 25.280583], zoom_start = 7)

table_path = "table2.csv"
df = pd.read_csv(table_path, encoding= 'unicode_escape')

# 新增:清理并转换men列为数值类型
df['men'] = pd.to_numeric(df['men'].astype(str).str.replace(',', '').str.strip(), errors='coerce')
# 新增:删除men列为空的无效行
df = df.dropna(subset=['men'])

folium.Choropleth(
    geo_data = geojson_path,
    name = "choropleth",
    data = df,
    columns = ["state_code", "men"],
    key_on = "feature.properties.state_code",
    fill_color = "BuPu",
    fill_opacity= 0.7,
    line_opacity= 0.2,
    legend_name="Men population(n)"
).add_to(m)

m

注:额外调整了变量命名,避免和内置的json、map关键字重名引发潜在冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:24:03