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

使用Pandas读取CSV触发ParserError,如何解决?

解决pandas读取CSV时的ParserError(字段数不匹配)

问题重现

执行以下代码加载CSV文件时出现错误:

# Load the DataFrame
df = pd.read_csv("/content/data.csv", encoding='unicode_escape')
df

错误信息:

ParserError                               Traceback (most recent call last)
<ipython-input-11-5c1453a4783b> in <cell line: 2>()
      1 # Load the DataFrame
----> 2 df = pd.read_csv("/content/data.csv", encoding='unicode_escape')
      3 df
8 frames
/usr/local/lib/python3.10/dist-packages/pandas/_libs/parsers.pyx in pandas._libs.parsers.raise_parser_error()

ParserError: Error tokenizing data. C error: Expected 8 fields in line 25066, saw 11

尝试调整encoding和encoding_errors参数无效。

解决方法

这个错误和编码无关,核心原因是CSV文件的第25066行字段数量与表头/其他行不一致,通常是该行包含未转义的分隔符(比如逗号)、引号未闭合等格式问题。以下是几种解决思路:

1. 跳过错误行(快速临时方案)

使用on_bad_lines参数直接跳过格式错误的行,适合数据量较大、个别错误行不影响分析的场景:

# 跳过错误行
df = pd.read_csv("/content/data.csv", encoding='unicode_escape', on_bad_lines='skip')

# 或者打印错误行警告但继续加载
df = pd.read_csv("/content/data.csv", encoding='unicode_escape', on_bad_lines='warn')

2. 定位并修复错误行(精准解决)

如果需要保留所有数据,先定位到问题行查看具体问题:

# 读取文件,定位第25066行(行号从1开始)
with open("/content/data.csv", 'r', encoding='unicode_escape') as f:
    for line_num, line in enumerate(f, start=1):
        if line_num == 25066:
            print(f"第{line_num}行内容:\n{line}")
            print(f"实际字段数:{len(line.split(','))}")

查看该行是否存在以下问题:

  • 字段内的逗号未用引号包裹(比如张三,男,北京市,朝阳区是错误格式,正确应为张三,"北京市,朝阳区",男)
  • 引号未闭合(比如"张三,男,北京市)
    手动修改CSV文件的问题行后,再重新加载。

3. 调整解析参数(适配特殊格式)

如果CSV的分隔符、引号规则特殊,尝试指定解析参数:

  • 指定引号字符,让解析器正确识别包含分隔符的字段:
df = pd.read_csv("/content/data.csv", encoding='unicode_escape', sep=',', quotechar='"')
  • 使用Python解析引擎(容错性比默认的C引擎更高):
df = pd.read_csv("/content/data.csv", encoding='unicode_escape', engine='python')

内容的提问来源于stack exchange,提问作者Dhruva_Teja D R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 11:07:39