Python 3 Pandas错误:pandas.parser.CParserError:标记数据时出错。 C错误:第5行预计11个字段,见13

时间:2015-04-20 17:43:14

标签: csv python-3.x pandas

我检查了这个答案,因为我遇到了类似的问题。

Python Pandas Error tokenizing data

但是,出于某种原因,我的所有行都被跳过了。

我的代码很简单:

import pandas as pd

fname = "data.csv"
input_data = pd.read_csv(fname) 

我得到的错误是:

  File "preprocessing.py", line 8, in <module>
    input_data = pd.read_csv(fname) #raw data file ---> pandas.core.frame.DataFrame type
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pandas/io/parsers.py", line 465, in parser_f
    return _read(filepath_or_buffer, kwds)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pandas/io/parsers.py", line 251, in _read
    return parser.read()
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pandas/io/parsers.py", line 710, in read
    ret = self._engine.read(nrows)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pandas/io/parsers.py", line 1154, in read
    data = self._reader.read(nrows)
  File "pandas/parser.pyx", line 754, in pandas.parser.TextReader.read (pandas/parser.c:7391)
  File "pandas/parser.pyx", line 776, in pandas.parser.TextReader._read_low_memory (pandas/parser.c:7631)
  File "pandas/parser.pyx", line 829, in pandas.parser.TextReader._read_rows (pandas/parser.c:8253)
  File "pandas/parser.pyx", line 816, in pandas.parser.TextReader._tokenize_rows (pandas/parser.c:8127)
  File "pandas/parser.pyx", line 1728, in pandas.parser.raise_parser_error (pandas/parser.c:20357)
pandas.parser.CParserError: Error tokenizing data. C error: Expected 11 fields in line 5, saw 13

7 个答案:

答案 0 :(得分:9)

解决方案是使用pandas内置分隔符&#34;嗅探&#34;。

input_data = pd.read_csv(fname, sep=None) 

答案 1 :(得分:4)

对于那些登陆的人,当文件实际上是.xls文件而不是真正的.csv时,我收到了此错误。尝试在电子表格应用中重新保存为csv。

答案 2 :(得分:2)

我遇到了同样的错误,我使用这个读取了我的csv数据:     d1 = pd.read_json('my.csv') 然后我试试这个     d1 = pd.read_json('my.csv', sep='\t') 这次是对的。 因此,如果您的分隔符不是',',您可以尝试使用此方法,因为默认值为',',因此如果您没有明确指出,则会出错。 pandas.read_csv

答案 3 :(得分:0)

由于多种原因,可能会出现此解析错误,并且此处以及Python Pandas Error tokenizing data中已发布了针对不同原因的解决方案。

我在此处发布了一个解决此错误的可能原因的解决方案:https://stackoverflow.com/a/43145539/6466550

答案 4 :(得分:0)

我有类似的问题。对于我的csv文件,它的发生是因为它们是在xgb_final_param = {'learning_rate': 0.56133897, 'gamma': 2.697656, 'max_depth': 50, 'n_estimators': 300, 'min_child_weight': 10} xgb_final = SklearnExtra(clf = XGBRegressor(), seed = Seed, params = xgb_final_param) xgb_final.fit(x_train, y_train) evaluate(xgb_final, x_test, y_test) #evaluate returns MSE 中创建的,因此与“常规” csv文件相比,它具有一些额外的逗号和不同的间距。

我发现,如果我在R中执行了R,则可以使用read.table和选项write.csv保存它。

我无法在熊猫中获得任何阅读选项来帮助我。

答案 5 :(得分:0)

此错误意味着,每行的列数不相等。就您而言,在第5行之前,您有11列,但在第5行中,您有13个输入(列)。

对于此问题,您可以尝试以下方法打开读取文件:

import csv
with open('filename.csv', 'r') as file:
    reader = csv.reader(file, delimiter=',')  #if you have a csv file use comma delimiter
    for row in reader:
        print (row)

答案 6 :(得分:0)

问题可能是csv文件的一行或多行包含比预期更多的定界符(逗号,)。当每一行与csv文件中定义列名的第一行的分隔符数量匹配时,即可解决此问题。