使用Pandas读取CSV文件遇ParserError,求排查及解决建议
CSV读取ParserError问题解决方法
是否需要转成.xlsx格式?
没必要急着转格式。CSV是纯文本格式,更容易排查和修复格式问题;转成.xlsx反而可能引入新的格式兼容问题,增加排查成本。先解决CSV本身的格式错误更高效。
如何定位有问题的行和列?
- 用pandas参数临时绕过错误并定位:
在read_csv里添加on_bad_lines='warn'(pandas 1.4+版本),运行后会打印出有问题的行号和内容;如果用旧版本,可用error_bad_lines=False跳过错误行,之后对比原文件行数和加载后的行数,找出缺失的行。
示例代码:krediler_df = pd.read_csv('KREDILER.csv', encoding='ISO-8859-9', thousands=',', decimal='.', on_bad_lines='warn') - 直接用文本编辑器检查:
错误提示明确指出第5行有问题(Expected 3 fields in line 5, saw 5),直接用记事本、VS Code等打开CSV文件,定位到第5行,检查是否有多余的分隔符(比如字段里的逗号没加双引号包裹,导致被误拆分成多个字段),或者引号未闭合的情况。 - 写简单脚本逐行校验:
用Python逐行读取文件,统计每行的字段数,和表头的字段数对比,找出不一致的行:import csv with open('KREDILER.csv', 'r', encoding='ISO-8859-9') as f: reader = csv.reader(f, delimiter=',') header = next(reader) expected_fields = len(header) for line_num, row in enumerate(reader, start=2): # 表头是第1行,数据从第2行开始计数 if len(row) != expected_fields: print(f"第{line_num}行有问题,字段数:{len(row)},预期:{expected_fields},内容:{row}")
内容的提问来源于stack exchange,提问作者Hello World
相关产品推荐
相关产品推荐

