繁体   English   中英

格式错误的CSV文件和Pandas read_csv由块

[英]Malformed CSV file and Pandas read_csv by chunk

我有一个csv文件:22 Go大小,46000000行来节省内存,csvfile被chunk读取和处理。

tp = pd.read_csv(f_in, sep=',', chunksize=1000, encoding='utf-8',quotechar='"') 
for chunk in tp: 
   chunk;

但该文件格式错误并引发异常:

Error tokenizing data. C error: Expected 87 fields in line 15092657, saw 162

有没有办法丢弃这个块并继续下一个块的循环?

问题类似于之前在此处发现的问题: Python Pandas Error数据标记

正如在答案中所说,您必须知道使用error_bad_lines = False会删除该行并建议更好的方法是调查数据集中的行。

正如EdChum所说,问题是如何跳过块,并添加'error_bad_lines = False'就可以了。 有没有办法拦截痕迹给出坏线并计算错误线?

为了拦截坏线,我使用以下代码:

# somewhere to store output
err = StringIO.StringIO()
# save a reference to real stderr so we can restore later
oldstderr = sys.stderr
# set stderr to our StringIO instance
sys.stderr = err

tp = pd.read_csv(f_in, sep=',', chunksize=1000, encoding='utf-8',quotechar='"', error_bad_lines=False) 
for chunk in tp:
      chunk

# restore stderr 
sys.stderr = oldstderr

# print(or use) the stored value from previous print
print err.len + 'lines skipped.'
print err.getvalue()
err.close()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM