【发布时间】:2018-07-17 23:57:25
【问题描述】:
我正在将一个包含 8 列的 CSV 文件读取到 Pandas 数据框中。最后一列包含一条错误消息,其中一些包含逗号。这会导致文件读取失败并出现错误ParserError: Error tokenizing data. C error: Expected 8 fields in line 21922, saw 9
有没有办法忽略第 8 个字段之后的所有逗号,而不必遍历文件并删除多余的逗号?
读取文件的代码:
import pandas as pd
df = pd.read_csv('C:\\somepath\\output.csv')
行之有效:
061AE,Active,001,2017_02_24 15_18_01,00006,1,00013,some message
失败的行:
061AE,Active,001,2017_02_24 15_18_01,00006,1,00013,longer message, with commas
【问题讨论】:
-
更新了代码和数据格式。
-
见pandas #2886。这是一个尚未解决的问题。不幸的是,我认为没有办法绕过预处理。
-
原始数据是从 XML 文件中解析出来的。您认为将每一列放在“引号”中会起作用吗?
-
@MikeS159 引号无济于事,但如果在解析过程中您可以在单元格之间使用制表符或分号分隔符,那么您可以毫无问题地使用简单的
pd.read_csv('filename')。与以后必须处理它相比,这实际上是理想的。