【发布时间】:2019-02-21 04:38:49
【问题描述】:
我正在分块读取一个大文件,并且我正在对每个块执行一些操作。在阅读其中一个获取它们时,我收到以下消息错误:
pandas.errors.ParserError:数据标记错误。 C 错误:预计第 15929977 行中有 26 个字段,看到 118
这意味着我的文件行之一与其他文件行的格式不同。我以为我能做的就是省略这块,但我找不到办法做到这一点。我试着做一个try/except 块如下:
data = pd.read_table('ny_data_file.txt', sep=',',
header=0, encoding = 'latin1', chunksize = 5000)
try:
for chunk in data:
# operations
except pandas.errors.ParseError:
# Here is my problem
我在这里写的是我的问题是,如果没有很好地解析块,我的代码会自动进入异常,甚至没有进入 for 循环,但我想要的是跳过这个块并前进到下一个块,我想在循环内执行操作。
我检查了 stackoverflow,但在 for 循环中执行 try 时找不到任何类似的东西。任何帮助将不胜感激。
更新:
我已尝试按照 cmets 中的建议进行操作:
try:
for chunk in data:
#operations
except pandas.errors.ParserError:
# continue/pass/handle error
但仍然没有捕获异常,因为如上所述,异常是在从我的数据中获取 chyunk 时创建的,而不是在对其进行操作时创建的。
【问题讨论】:
-
如果您跳过异常处理并传递
error_bad_lines=True会发生什么 - 这是否会挽救足够多的行来使用?因为你有sep=','- 你确定你不应该在这里使用pd.read_csv,以防问题是你在列中嵌入了引号? -
我确实在列中嵌入了引号。
error_bad_lines = True应该作为pd.read_csv的参数? -
对不起,我的意思是在引用的列中嵌入逗号,但是是的 - 可能值得一试,看看它是否有帮助。
-
它仍然给出 panda.erros.ParserError
-
对不起使用 False - 不是 True...
标签: python python-3.x pandas for-loop try-except