Pandas read_csv使用C引擎推断0字段

时间:2015-09-06 03:42:14

标签: python pandas

我有一些数据文件,我试图读入Pandas Dataframes。文件的结构有点不寻常,因为标题信息实际上是在多行上。我可以使用Python引擎将数据读入Dataframe,方法是设置header=None并指定列名和数字。但是,如果我将引擎更改为C,则会出现以下错误:

 File "pandas/parser.pyx", line 758, in pandas.parser.TextReader.read (pandas/parser.c:7411)
 File "pandas/parser.pyx", line 780, in pandas.parser.TextReader._read_low_memory (pandas/parser.c:7651)
 File "pandas/parser.pyx", line 833, in pandas.parser.TextReader._read_rows (pandas/parser.c:8268)
 File "pandas/parser.pyx", line 820, in pandas.parser.TextReader._tokenize_rows (pandas/parser.c:8142)
 File "pandas/parser.pyx", line 1758, in pandas.parser.raise_parser_error (pandas/parser.c:20728)
 pandas.parser.CParserError: Error tokenizing data. C error: Expected 0 fields in line 7, saw 5

目视检查文件表明它们已正确格式化。 重现错误的代码如下所示。

import pandas as pd


def read_py(file_name):

    df = pd.read_csv(file_name,
                     sep='|',
                     skiprows=6,
                     names=['COL A', 'COL B'],
                     header=None,
                     usecols=[3, 5],
                     engine='python',
                     keep_default_na=False,
                     na_values="None")

     print(df)


def read_c(file_name):

    df = pd.read_csv(file_name,
                     sep='|',
                     skiprows=6,
                     names=['COL A', 'COL B'],
                     header=None,
                     usecols=[3, 5],
                     engine='c',
                     keep_default_na=False,
                     na_values="None")

    print(df)

if __name__ == "__main__":
    _file = r'~/Documents/BugExample.csv'
    read_py(_file)
    read_c(_file)

我使用的文件是:

Field1
Field2
Field3
Field4
Field5

1|2|3|4|5
2|4|6|8|10

这是Pandas中的错误,还是我做错了什么?

0 个答案:

没有答案