Python Pandas 错误标记数据

新手上路,请多包涵

我正在尝试使用 pandas 来操作 .csv 文件,但出现此错误:

pandas.parser.CParserError:错误标记数据。 C 错误:第 3 行应有 2 个字段,但看到 12 个

我试图阅读熊猫文档,但一无所获。

我的代码很简单:

 path = 'GOOG Key Ratios.csv'
#print(open(path).read())
data = pd.read_csv(path)

我该如何解决这个问题?我应该使用 csv 模块还是其他语言?

文件来自 晨星

原文由 abuteau 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 213
2 个回答

你也可以试试;

 data = pd.read_csv('file1.csv', on_bad_lines='skip')

请注意,这会导致违规行被跳过。

编辑

对于 Pandas < 1.3.0 尝试

data = pd.read_csv("file1.csv", error_bad_lines=False)

根据 熊猫 API 参考

原文由 richie 发布,翻译遵循 CC BY-SA 4.0 许可协议

这可能是一个问题

  • 数据中的分隔符
  • 第一行,正如@TomAugspurger 指出的那样

要解决它,请尝试在调用 read_csv 时指定 sep 和/或 header 参数。例如,

 df = pandas.read_csv(filepath, sep='delimiter', header=None)

在上面的代码中, sep 定义了你的分隔符和 header=None 告诉熊猫你的源数据没有标题/列标题的行。因此 文档 说:“如果文件不包含标题行,那么您应该明确传递 header=None”。在这种情况下,pandas 会自动为每个字段 {0,1,2,…} 创建整数索引。

根据文档,分隔符应该 不是 问题。文档说“如果 sep 是 None [未指定],将尝试自动确定它。”然而,我在这方面运气不佳,包括带有明显分隔符的实例。

另一种解决方案可能是尝试自动检测分隔符

# use the first 2 lines of the file to detect separator
temp_lines = csv_file.readline() + '\n' + csv_file.readline()
dialect = csv.Sniffer().sniff(temp_lines, delimiters=';,')

# remember to go back to the start of the file for the next time it's read
csv_file.seek(0)

df = pd.read_csv(csv_file, sep=dialect.delimiter)

原文由 william_grisaitis 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题