我正在尝试使用 pandas 操作 .csv 文件,但收到此错误:
pandas.parser.CParserError:标记数据时出错。 C 错误:第 3 行应有 2 个字段,看到 12
我尝试阅读 pandas 文档,但什么也没找到。
我的代码很简单:
path = 'GOOG Key Ratios.csv'
#print(open(path).read())
data = pd.read_csv(path)
如何解决这个问题?我应该使用
csv
模块还是其他语言?
pandas 中的“CParserError: Error tokenizing data”错误消息表示 pandas 无法解析你的 CSV 文件,因为它在预期位置找不到预期数量的字段。在这种情况下,你的代码的第 3 行有 12 个字段,而它应该只有 2 个。
以下是导致此错误的一些最常见原因以及如何解决这些问题:
-
分隔符问题: pandas 默认使用逗号 (,) 作为分隔符。如果你的 CSV 文件使用不同的分隔符(例如制表符、分号或空格),则 pandas 会将整行解释为一个字段。
解决方案: 在
read_csv()
函数中明确指定分隔符。例如,如果你的文件使用制表符作为分隔符,你可以使用:python data = pd.read_csv(path, sep='\t')
-
标题行中的引号: 如果你的标题行包含用引号括起来的字段,而数据行未包含用引号括起来的字段,则可能会导致此错误。
解决方案: 使用
header
参数指定哪一行包含标题,或者使用skiprows
参数跳过标题行。例如,如果你的标题在第一行:python data = pd.read_csv(path, header=0)
或者,如果要跳过前三行:
python data = pd.read_csv(path, skiprows=3)
-
数据行中的引号或分隔符: 如果你的数据字段包含分隔符或引号,则需要使用
quotechar
参数正确解析它们。解决方案: 使用
quotechar
参数指定用于括起数据的字符。例如,如果你的数据使用双引号 (") 作为引号字符:python data = pd.read_csv(path, quotechar='"')
-
文件编码: 如果你的 CSV 文件使用与 pandas 默认编码 (UTF-8) 不同的编码,则可能会导致此错误。
解决方案: 尝试使用
encoding
参数指定文件的正确编码。例如,如果你的文件使用latin-1
编码:python data = pd.read_csv(path, encoding='latin-1')
-
文件损坏: 在某些情况下,你的 CSV 文件可能已损坏。
解决方案: 尝试使用文本编辑器打开该文件,以查看是否有任何明显的损坏。你还可以尝试重新生成该文件,以查看问题是否仍然存在。
要排除故障,请使用
open(path).read()
打印 CSV 文件的内容,并仔细检查分隔符、引号和任何潜在问题。完成上述步骤后,你应该能够解决该错误并使用 pandas 成功读取 CSV 文件。