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.csv
和row.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的主要内容,如果未能解决你的问题,请参考以下文章
Python:ModuleNotFoundError:没有名为“pandas”的模块[重复]
Python:使用多线程修改pandas DataFrame时,Spyder会发生错误