在pandas中打开文本文件时仅选择某些行

时间:2015-08-25 14:23:53

标签: python text pandas

我有一个文本文件,它是前80行的制表符分隔符,这些是我在文件中需要的唯一行。我通常会打开这样的文件:

df=pd.read_csv(r'file.txt', sep='\t')

但这会返回错误:

CParserError: Error tokenizing data. C error: Expected 7 fields in line 84, saw 81

因为在某个地方它不再是制表符分隔我很确定。如果我手动删除文件中除了前80行之外的所有内容,我可以设置制表符分隔符并且读取正常,但我需要为大量文件执行此操作。我知道我只能用这个选择前80个:

df=df.iloc[:80,:]

但是我的数据框有\t分隔每一列而不是我想要的空格。有没有办法在打开文件时只选择前80行,那么我可以设置sep='\t'而不会出错?

2 个答案:

答案 0 :(得分:1)

您可以使用参数https://github.com/fabioz/Pydev/commit/dd167df9960171dd0a05679804df157f4f6886bf指定仅读取前80行:

df=pd.read_csv(r'file.txt', sep='\t', nrows=80)

答案 1 :(得分:0)

您可以设置错误参数True,这将删除空白或格式错误的行。根据我的视图,nrows不合适,因为您必须手动添加每个文件的行数。

    df=pd.read_csv(r'file.txt', sep='\t', error_bad_lines=False)

您还可以浏览这些属性

  

warn_bad_lines

     

skip_blank_lines

Folow this link to read more