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

Python合并多个CSV文件报错:数据标记化错误求助

解决CSV合并时的ParserError问题

你的报错pandas.errors.ParserError: Error tokenizing data. C error: Expected 1 fields in line 243, saw 4本质是某个CSV文件的格式不符合预期:pandas默认按逗号解析,但该文件的第243行出现了额外的分隔符,或者文件实际使用的不是逗号作为分隔符,导致字段数不匹配。

以下是具体解决步骤:

1. 定位出错的具体文件

先把列表推导式改成循环捕获错误,找出哪个文件有问题:

import glob
import pandas as pd

files = glob.glob("D:\\green_lake\\Projects\\covid_19\\tabelas_relacao\\acre\\*.csv")
dfs = []
for file_path in files:
    try:
        df = pd.read_csv(file_path)
        dfs.append(df)
    except Exception as err:
        print(f"文件 {file_path} 解析失败: {err}")
# 合并正常读取的文件
if dfs:
    files_merged = pd.concat(dfs, ignore_index=True)

运行后会输出出错的文件名,你可以直接打开该文件检查第243行的内容。

2. 针对出错文件的修复方案

方案一:指定正确的分隔符

很多非英文环境的CSV会用分号(;)或制表符(\t)做分隔符,而非逗号。你可以手动指定分隔符:

# 假设是分号分隔
df = pd.read_csv(file_path, sep=';')
# 如果是制表符分隔
df = pd.read_csv(file_path, sep='\t')
# 自动检测分隔符(适合不确定的情况)
df = pd.read_csv(file_path, sep=None, engine='python')

方案二:跳过错误行

如果只是个别行格式错误,不想修改原文件,可以直接跳过这些行(pandas 1.4.0及以上版本支持):

df = pd.read_csv(file_path, on_bad_lines='skip')

旧版pandas可以用error_bad_lines=False(已被弃用,建议升级pandas)。

方案三:检查文件编码

如果文件编码不是默认的utf-8,也可能导致解析异常,尝试指定编码:

# 常见编码:utf-8、latin-1、gbk
df = pd.read_csv(file_path, encoding='latin-1')

3. 确保所有CSV格式统一

合并前确认所有CSV文件的列数、列名、分隔符一致,否则合并后会出现列错位或缺失的问题。如果列名不一致,可以用pd.read_csv的names参数指定统一列名,或者手动调整每个文件的列。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:05:26