Python使用Pandas读取CSV文件时遭遇PandasParserError求助
解决Pandas读取CSV时的PandasParserError字段数不匹配问题
问题重现
使用Python 3.8 + Pandas 1.3.1调用pd.read_csv()时触发报错:
PandasParserError: Error tokenizing data. C error: Expected 3 fields in line 4, saw 4
代码片段:
import pandas as pd file_path = 'path/to/my/file.csv' data = pd.read_csv(file_path)
解决方案
1. 跳过格式错误的行
Pandas默认严格校验每行字段数,遇到不匹配行直接报错。可通过参数跳过错误行:
# Pandas 1.3.0+ 推荐写法 data = pd.read_csv(file_path, on_bad_lines='skip') # 兼容旧版本的写法(1.3.1同样支持) data = pd.read_csv(file_path, error_bad_lines=False, warn_bad_lines=True)
warn_bad_lines=True会在控制台输出被跳过的行号,方便后续排查CSV文件问题。
2. 强制指定字段数/列名
若明确知道CSV应有的列数,可自定义列名并强制按指定列数读取(需使用Python解析器):
import pandas as pd # 假设正确列数为3,自定义列名 col_names = ['col1', 'col2', 'col3'] data = pd.read_csv(file_path, names=col_names, engine='python', error_bad_lines=False)
3. 修复CSV文件格式问题
报错本质是第4行字段数与其他行不一致,建议直接检查CSV文件:
- 查看第4行是否多输入了分隔符(如逗号、制表符)
- 检查字段中是否包含未用引号包裹的分隔符(比如字段内容是
a,b但未加双引号,会被拆成两个字段) - 确认换行符统一(Windows下为
\r\n,避免混用其他格式)
如果是引号导致的字段拆分错误,可指定Pandas的引号处理规则:
import csv data = pd.read_csv(file_path, quoting=csv.QUOTE_ALL)
内容的提问来源于stack exchange,提问作者Nikhil Batar
相关产品推荐
相关产品推荐

