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

csv转JSON时触发int64类型无法JSON序列化报错如何解决

问题成因

调用pd.to_numeric()转换CSV字段后得到的是NumPy专属数值类型(比如np.int64、np.float64),Python原生json模块不支持直接序列化这类NumPy类型,因此触发报错。
脚本此前运行无异常,通常是因为旧版本Pandas/NumPy在部分场景下会自动将数值转换为Python原生类型,或是此前处理的CSV数据未触发返回纯NumPy数值类型的逻辑。

解决建议

  • 方案1:转换时直接转成Python原生数值
    所有pd.to_numeric()的调用结果末尾加.item(),该方法会自动将NumPy数值转为对应的Python int/float类型,修改示例:
    "metric": pd.to_numeric(row['risk1']).item(),
    "data": {
      "Risk1": pd.to_numeric(row["risk1"]).item(),
      # 其余所有pd.to_numeric调用都统一添加.item()即可
    }
    
  • 方案2:为json.dumps配置自定义序列化规则
    不需要修改原有数值转换代码,调用json.dumps时指定default参数,自动处理NumPy类型:
    import numpy as np
    jsonString = json.dumps(dataset, indent=4, default=lambda x: x.item() if isinstance(x, np.generic) else x)
    
  • 方案3:使用Pandas内置的JSON导出能力
    直接用Pandas读取CSV加工后调用to_json()方法导出,不需要手动处理序列化逻辑,兼容性更好。

额外注意:你提供的CSV表头存在两个重复的risk6字段,且没有risk7字段,修复序列化问题后还会触发字段不存在的报错,建议先修正CSV表头。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:54:02