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

使用pandas read_csv修改列数据类型时出现转换错误的求助

问题解决方法

错误原因分析

  1. 代码参数错误:dtype={"USIA":int()}里的int()是错误写法,int()会生成一个整数0,而pandas的dtype参数需要的是数据类型对象(直接写int即可)。
  2. 数据内容问题:错误信息invalid literal for int() with base 10: 'USIA'说明CSV文件中USIA列存在字符串值USIA(大概率是文件里重复出现了表头行,或者某行数据错误填充了表头文本)。

分步解决方案

步骤1:修正dtype参数写法

先把代码里的int()改为int,这是基础错误修正:

import pandas as pd
DPT = pd.read_csv("DPT KOTA MADIUN.csv", dtype={"USIA": int}, low_memory=False)

如果运行后仍报错,说明文件里确实存在非数值内容,执行下一步。

步骤2:处理非数值数据

先读取文件不指定dtype,再用pd.to_numeric强制转换,将无法转为整数的内容转为NaN(如果需要保留这些行):

import pandas as pd
# 先读取全部数据
DPT = pd.read_csv("DPT KOTA MADIUN.csv", low_memory=False)
# 转换USIA列,非数值转为NaN,使用支持NaN的Int64类型
DPT['USIA'] = pd.to_numeric(DPT['USIA'], errors='coerce').astype('Int64')

如果不需要包含USIA为非数值的行,可以转换后删除这些行:

DPT = DPT.dropna(subset=['USIA'])

步骤3:检查并清理CSV文件

打开CSV文件确认:

  • 是否存在重复的表头行(比如中间某行又写了USIA等表头文本),如果有,读取时用skiprows参数跳过,例如跳过第2行:
    DPT = pd.read_csv("DPT KOTA MADIUN.csv", dtype={"USIA": int}, low_memory=False, skiprows=[1])
    
  • 是否存在其他非数字字符(比如空格、字母),可以手动清理这些内容后再读取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 17:45:33