[read_csv]pandas.errors.ParserEr

2020-08-13  本文已影响0人  Silver_42ac

根源:
panda 读取文件默认 每一行列数都是相同的,从而便于生成数据框DF 等数据结构;方便计算
代码:

import numpy as np
import pandas as pd
pd.read_csv(file_list[0], sep='\t', dtype={'Chr':str, 'start':int})

dtype={'Chr':str, 'start':int} 是指定特定列数据类型的;比如Chr 列其实就是 表头为‘Chr’ 的列
报错:

pandas.errors.ParserError: Error tokenizing data. C error: Expected 1 fields in line 3, saw 2

dtype={'Chr':str, 'start':int}

报错含义 就是 在解析 文件时, 在文件第3行 根据前面的split fields 数量 推断,目前这一行应该有 3 列(域,fields);但是实际上只看到2列

这个报错一般是文件有一些行,列数与前面的不一致

解决:
(1) 手动对文件处理,删掉多出来的列
如 linux 下 cut 命令 cut -f 1-20 file >mod.file

-f 就是 fields 指定第1-20 列输出,默认使用tab(\t) 分隔

(2)列数不对的行过滤掉
添加 参数 error_bad_lines=False ;遇到有问题的行时,不会保存到数据框DF中

pd.read_csv(file_list[0], sep='\t', dtype={'Chr':str, 'start':int}, error_bad_lines=False)
上一篇 下一篇

猜你喜欢

热点阅读