Python 3 Pandas 错误:pandas.parser.CParserError:错误标记数据。 C 错误:第 5 行中应有 11 个字段,但看到了 13

Posted

技术标签:

【中文标题】Python 3 Pandas 错误:pandas.parser.CParserError:错误标记数据。 C 错误:第 5 行中应有 11 个字段,但看到了 13【英文标题】:Python 3 Pandas Error: pandas.parser.CParserError: Error tokenizing data. C error: Expected 11 fields in line 5, saw 13 【发布时间】:2015-06-27 14:03:36 【问题描述】:

我遇到了类似的问题,所以我查看了这个答案。

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

【问题讨论】:

所以我们应该以某种方式从产生错误的数据中进行逆向工程?请发布示例原始输入数据 您的 CSV 文件的每一行似乎没有相同数量的字段。尝试在 Excel 或您喜欢的电子表格程序中打开它以验证其结构。 这个描述把我带到了这里,这和我遇到的问题一样。为此 +1。 为 read_csv() 的可变列数动态生成列名:***.com/a/52890095/1427624 【参考方案1】:

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

【讨论】:

【参考方案2】:

此错误意味着,每行的列数不相等。在您的情况下,直到第 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)

【讨论】:

【参考方案3】:

我也遇到过类似的问题。使用我的 csv 文件,因为它们是在 R 中创建的,所以它有一些额外的逗号和与“常规”csv 文件不同的间距。

我发现如果我在 R 中做了一个read.table,我可以使用write.csvrow.names = F 的选项来保存它。

我无法在 pandas 中获得任何读取选项来帮助我。

【讨论】:

【参考方案4】:

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

【讨论】:

太棒了!万分感谢!它也解决了我的问题。【参考方案5】:

出现此解析错误的原因有多种,不同原因的解决方案已在此处以及Python Pandas Error tokenizing data 中发布。

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

【讨论】:

【参考方案6】:

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

【讨论】:

哇。谢谢你。没有任何工作,我花了大约 2 个小时在谷歌上搜索如何解决这个问题。我什么都试过了!原来,发送给我的“csv”实际上是一个“txt”文件,而不是真正的 csv。我不知道这是怎么发生的,因为它以“.csv”结尾,但谢谢!【参考方案7】:

解决方案是使用 pandas 内置分隔符“嗅探”。

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

【讨论】:

以上是关于Python 3 Pandas 错误:pandas.parser.CParserError:错误标记数据。 C 错误:第 5 行中应有 11 个字段,但看到了 13的主要内容,如果未能解决你的问题,请参考以下文章

“错误:找不到满足pandas>=1.2.3要求的版本”

Python:ModuleNotFoundError:没有名为“pandas”的模块[重复]

错误:系列的真值不明确 - Python pandas

Python:使用多线程修改pandas DataFrame时,Spyder会发生错误

请问一下python中已经安装过pandas包,但是导入的时候为啥发生这个错误,应该怎么解决

使用 Pandas 抛出错误在 Python 中编写 UDF