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

使用pandas.read_csv读取CSV文件报错字段数不匹配如何解决

问题原因

该报错的核心是CSV文件的列解析结果不一致:文件前6行解析后均为5个字段,第7行解析后得到7个字段,大概率是部分字段内容中包含了默认分隔符(逗号)但没有被引号包裹转义,并非你猜测的列缺失数据。

解决方案

你可以根据自己的需求选择对应方案:

  • 方案1:强制指定列数读取
    如果确认文件最大列数为7,可以手动指定列名,不足列的位置会自动填充空值:
import pandas as pd
file = 'data/opel_corsa_01.csv'
# 可根据实际业务修改列名,这里示例定义7个列
col_names = ['col1', 'col2', 'col3', 'col4', 'col5', 'col6', 'col7']
df = pd.read_csv(file, names=col_names, engine='python')
  • 方案2:修正读取参数
    先打开原始CSV查看第7行的格式,确认分隔符、转义规则是否和默认参数匹配:如果实际是分号分隔就添加sep=';'参数,如果字段用单引号包裹就添加quotechar="'"参数:
# 示例为使用分号作为分隔符的情况
df = pd.read_csv(file, sep=';', engine='python')
  • 方案3:跳过异常行(不需要异常行数据时使用)
    如果你不需要保留列数异常的行,可直接跳过。注意error_bad_lines参数在pandas 1.4.0及以上版本已弃用,替换为on_bad_lines参数:
# pandas >= 1.4.0 版本
df = pd.read_csv(file, on_bad_lines='skip', engine='python')
# pandas < 1.4.0 版本
df = pd.read_csv(file, error_bad_lines=False, engine='python')
  • 方案4:逐行排查格式问题
    如果以上方案都不生效,可先逐行打印前10行内容,确认格式差异后再调整参数:
with open(file, 'r', encoding='utf-8') as f:
    for i in range(10):
        print(f'第{i+1}行:', f.readline())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:12:02