python - 尝试使用 chunksize 迭代器除外

标签 python pandas chunks try-except

我想读取一个大的 csv 文件,所以我使用了 pandas 的 chunksize 方法迭代器。但是我得到了一个 ParserError 所以我想使用 try except 并且当我得到这个错误时我想传递到下一个 block 迭代。 所以我测试了:

df = pd.read_csv("file.csv",iterator=True)
d=True
while d==True : 
    try:
        df.get_chunk(500000)
    exept ParserError : 
         pass
    except StopIteration:
         d=False

但是我得到这个错误:

NameError:名称“ParserError”未定义

谢谢你的帮助!!

最佳答案

最新版本的 pandas 允许 read_csv 接受您可以在迭代时传递的 chunksize 参数。

for chunk in pd.read_csv("file.csv", 
                         chunksize=500000, 
                         iterator=True, 
                         error_bad_lines=False,
                         engine='python'):
    ...  # do something with `chunk`

不需要 while 循环或错误处理,因为 pd.read_csv 会在耗尽时自动引发 StopIteration for 处理并退出。

关于python - 尝试使用 chunksize 迭代器除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47886546/

相关文章:

python - 如何将列表拆分为 n 个大小的 block ,其中 n 是一个可迭代的整数列表?

python - BeautifulSoup 第一个 child 在 thia html 网络抓取

python - _ssl.c :351: error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib

python - ipython pandas plot不显示

Python:UserWarning:此模式具有匹配组。要实际获取组,请使用 str.extract

MongoDB 不将 block 移动到分片集群中的新分片

python - yocto/bitbake 配方中 '__anonymous' 函数的含义是什么?

python - 由于Python没有switch语句,我应该使用什么?

pandas - 读取 csv 文件时如何跳过偶数/奇数行?

python - 如何在 Python 中将读取一个大的 csv 文件分成大小均匀的 block ?