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

pd.read_csv报列数不匹配错误,如何读取行尾多逗号的CSV第52行起数据

读取末尾多逗号的CSV文件报错的解决方案

报错核心原因:pandas按文件前几行推断CSV只有2列,第52行开始每行末尾多余的逗号生成了第三列空字段,触发列数不匹配错误。你之前用的error_bad_lines=False参数会直接跳过所有列数不匹配的行,所以52行及之后的数据全部被过滤了,才只显示到第44行。

方案1:指定读取列数(最便捷,适合仅需52行及之后数据的场景)

直接指定跳过前51行,仅读取前2列有效数据,忽略末尾多余的空列:

import pandas as pd

extracted_file = pd.read_csv(
    filename,
    skiprows=51,  # 跳过前51行不需要的内容
    names=['serial', 'value'],  # 自定义有效列的列名,可按需修改
    usecols=[0, 1]  # 仅读取前2列,自动忽略末尾逗号生成的多余空列
)

方案2:预处理修复CSV格式(适合需要保留全部行数据的场景)

先读取文件逐行删掉末尾的逗号,再传给pandas读取,从根源解决格式问题:

import pandas as pd
from io import StringIO

with open(filename, 'r', encoding='utf-8') as f:
    # 逐行删除末尾的逗号和换行符,再补回统一换行符
    processed_lines = [line.rstrip(',\n') + '\n' for line in f]

# 把处理后的文本转为文件对象供pandas读取
extracted_file = pd.read_csv(StringIO(''.join(processed_lines)))

方案3:自定义坏行处理逻辑(适配pandas 1.4+版本)

旧版error_bad_lines参数已废弃,用新版on_bad_lines参数自定义处理规则,遇到列数超标的行直接截断取前2个字段:

extracted_file = pd.read_csv(
    filename,
    on_bad_lines=lambda bad_line: bad_line[:2]
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:15:03