首页 > 解决方案 > ParserError:错误标记数据。C 错误:预计第 6 行中有 4 个字段,看到 5

问题描述

我是 Python 和 Pandas 库的新手。我正在尝试在 Windows 10 中使用 pandas 读取 csv 文件,但出现上述错误。奇怪的是,相同的代码在其他一些 PC 上运行时没有任何错误。 没有 sep=";" 1)我试过包括 sep=";" 并且输出不是我所期望的(数据读入一系列而不是数据帧)。 使用 sep=";" 2)我在使用属性 nrows="5" 时得到部分输出,但在使用 nrows="6" 时得到相同的解析器错误(很明显,程序在第 6 行遇到了一些困难)。

我包括数据集的第一几行的快照以供参考。 第 30 行数据集

标签: pythonpandascsv

解决方案


解释

问题是,当您使用 读取 CSV 时pd.read_csv,它使用文件的第一行作为标题。您的文件有 4 个这样的值:

citrus-fruit, semi-finished fruit, margarine, ready soup

它现在假设每一行最多有 4 个逗号分隔值,但如果它有更少,它会将缺失值视为空白。当它试图解析第 6 行时,即

whole milk, butter, yogurt, rice, abrasive cleaner

它看到一个额外的值 ( abrasive cleaner) 并引发错误。

当您;用作分隔符时,它会读取整行而不遇到 a ;,因此整个数据框只有一列,即作为字符串的行。

解决方案

这取决于您要达到的目标。如果您确实想以 CSV 格式阅读此内容,您可以:

  1. 在 CSV 文件中添加标题行,如下所示(假设您有 11 列):
item1, item2, item3, item4 ........ item11
  1. 使用 , 的names参数read_csv(再次假设您有 11 列),如下所示:
pd.read_csv(filename, names=['item' + str(i) for i in range(11)])

推荐阅读