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

使用pandas.read_csv读取列数不均DAT文件触发ParserError如何解决

解决方案

该报错是因为pandas默认以第一行的字段数作为全局标准,后续行字段数和第一行不一致就会抛出异常,针对这种行数字段数不统一的文件,有两种常用的读取方案:

方案1:按文件最大列数读取(保留所有行的全部内容)

先手动统计文件里的最大字段数,读取时指定对应数量的列名即可,字段数不足的行会自动填充空值NaN,代码示例:

import pandas as pd

file_path = "/home/gopakumar/Downloads/test.DAT"
# 先统计文件最大列数
max_cols = 0
with open(file_path, 'r', encoding='windows-1252') as f:
    for line in f:
        cols = len(line.strip().split(';'))
        if cols > max_cols:
            max_cols = cols

# 生成自定义列名,格式为col0、col1...colN
col_names = [f'col{i}' for i in range(max_cols)]
# 读取时指定列名即可避免列数不一致报错
df = pd.read_csv(
    file_path, 
    header=None, 
    sep=';', 
    names=col_names,
    engine='python',
    encoding="windows-1252"
)

方案2:跳过字段数异常的行(仅保留和第一行列数一致的行)

如果不需要保留列数超出第一行的内容,可以直接设置on_bad_lines参数跳过错误行:

import pandas as pd
file_path = "/home/gopakumar/Downloads/test.DAT"
df = pd.read_csv(
    file_path, 
    header=None, 
    sep=';', 
    engine='python',
    encoding="windows-1252",
    on_bad_lines='skip' # pandas1.3以下老版本可替换为error_bad_lines=False
)

如果需要感知哪些行被跳过,把参数值改成on_bad_lines='warn'即可,读取时会在控制台打印异常行的行号提示。

补充说明

你提供的样例文件中不同开头的行(0050/0070/0080/0090)属于不同类型的业务数据,如果后续需要分别处理,读取完成后可以按第一列的标识过滤拆分不同的子数据集使用。

内容的提问来源于stack exchange,提问作者Gopakumar N G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:48:02