Python使用pd.read_csv读取CSV文件出现ParserError报错如何解决?
报错核心原因
pandas读取CSV时会默认根据前N行的内容推断整个文件的列数,你的文件前3行每行只有1个分隔符分隔的字段,pandas默认判定文件只有1列,到第4行出现了2个字段,和推断的列数不匹配,就触发了这个报错。
可用修复方案
- 手动指定正确分隔符
大部分该类报错都是pandas推断的分隔符和文件实际使用的分隔符不一致导致的,你可以先打开CSV文件查看字段间的实际分隔符,再通过sep参数传入:
示例(如果是制表符分隔):customer_data = pd.read_csv('file', sep='\t')
示例(如果是分号分隔):customer_data = pd.read_csv('file', sep=';') - 跳过格式不匹配的行
如果你不需要格式异常的行,可以直接通过参数跳过错误行:
pandas 1.3.0及以上版本:customer_data = pd.read_csv('file', on_bad_lines='skip')
旧版本pandas:customer_data = pd.read_csv('file', error_bad_lines=False) - 手动指定列数读取
如果你确认文件实际的列数,可以手动传入列名强制pandas按指定列数读取,比如确认文件是2列:customer_data = pd.read_csv('file', names=['第一列', '第二列']) - 修正源文件格式
直接打开CSV文件定位到第4行,检查是否存在多余分隔符、前后引号未闭合、内容异常换行的问题,手动修正文件后再重新读取即可。
内容的提问来源于stack exchange,提问作者VLC Groups
相关产品推荐
相关产品推荐

