我有一些数据文件,我试图读入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中的错误,还是我做错了什么?