根源:
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)
网友评论