我正在处理一个大数据集,因此要在 pandas 中读取它,我使用 read_csv
和 chunk=
选项。
data = pd.read_csv("dataset.csv", chunksize=2e5)
然后我按以下方式操作分块的 DataFrame
any_na_cols = [chunk.do_something() for chunk in data]
问题是,当我想以与上面相同的方式做其他事情时,我会得到一个空结果,因为我已经迭代了分块的 DataFrame。因此,我必须再次调用 data = pd.read_csv("dataset.csv", chunksize=2e5)
才能执行下一步操作。
这很可能没有问题,但出于某种原因,我觉得这种方法在某种程度上不太优雅。是否没有像 data.rewind() 或类似的方法可以让我再次迭代这些 block ?我在文档中找不到类似的内容。或者也许我用这种方法犯了一些设计错误?
最佳答案
我认为再次读取 CSV 不是一个好主意 - 您将使 IO 数量增加一倍。最好在同一次迭代中“做点别的事情”:
any_na_cols = pd.DataFrame()
for chunk in pd.read_csv("dataset.csv", chunksize=2e5)
any_na_cols = pd.concat([any_na_cols, chunk.do_something()], ignore_index=True)
# do something else
关于python - Pandas - 是否可以使用 chunk= 参数读取 "rewind"read_csv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39583153/