使用Python Pandas合并多个CSV文件时遭遇解析错误
解决Pandas合并CSV时的ParserError问题
这个错误的核心原因是目标CSV文件中存在格式不规范的行:某一行的字段数量与表头字段数不一致(比如错误提示里的第2602行,预期1个字段却出现了2个),通常是因为行内包含未正确转义的分隔符、换行符,或者文件本身格式混乱导致的。以下是几种可行的解决方法:
方法一:跳过错误行快速合并
直接让Pandas跳过格式异常的行,适合不纠结少量错误数据的场景:
import pandas as pd csv_files = ['data_SHTest1_283.csv', 'data_SHTest1_284.csv'] dfs = [] for file in csv_files: # on_bad_lines='skip' 跳过错误行,也可以用'on_bad_lines='warn'查看错误行详情 df = pd.read_csv(file, on_bad_lines='skip') dfs.append(df) combined_df = pd.concat(dfs, ignore_index=True) combined_df.to_csv('Master File VS.csv', index=False)
方法二:定位并修复错误行
如果需要保留所有数据,可以先找到异常行手动修复:
# 遍历文件找出字段数异常的行 target_field_count = 1 # 替换为表头实际的字段数 for file in csv_files: with open(file, 'r', encoding='utf-8') as f: for line_num, line in enumerate(f, start=1): # 假设分隔符是逗号,可根据实际修改 current_field_count = len(line.strip().split(',')) if current_field_count != target_field_count: print(f"文件 {file} 第 {line_num} 行异常:{line.strip()}")
找到异常行后,打开CSV文件手动调整(比如给包含分隔符的字段加上引号包裹),再重新执行合并代码。
方法三:强制指定字段数解析
如果明确知道表头的字段名和数量,可以强制按指定格式解析:
import pandas as pd # 替换为实际的表头字段列表 column_names = ['字段1'] csv_files = ['data_SHTest1_283.csv', 'data_SHTest1_284.csv'] dfs = [] for file in csv_files: df = pd.read_csv(file, names=column_names, header=0, on_bad_lines='skip') dfs.append(df) combined_df = pd.concat(dfs, ignore_index=True) combined_df.to_csv('Master File VS.csv', index=False)
方法四:确认分隔符是否正确
有时候错误是因为CSV实际使用的分隔符不是默认的逗号(比如制表符\t、分号;),可以指定正确的分隔符:
# 示例:假设分隔符是制表符 df = pd.read_csv(file, sep='\t', on_bad_lines='skip')
内容的提问来源于stack exchange,提问作者achour99
相关产品推荐
相关产品推荐

