如何阅读包含许多CSV文件的许多大型.7z文件?

问题描述 投票:0回答:1

我有很多.7z文件,每个文件包含许多大型CSV文件(超过1GB)。我怎么能在python中读到这个(特别是pandas和dask数据框)?我应该将压缩格式更改为其他格式吗?

pandas csv dataframe dask 7zip
1个回答
1
投票

我相信你应该可以使用打开文件

import lzma
with lzma.open("myfile.7z", "r") as f:
    df = pd.read_csv(f, ...)

严格来说,这是针对xz文件格式,但也可能适用于7z。如果没有,您将需要使用libarchive。

要与Dask一起使用,您可以使用dask.delayed为每个文件执行上述操作。 dd.read_csv直接允许你指定storage_options={'compression': 'xz'};但是,文件中的ramdom访问最多可能效率低下,因此您应该添加blocksize=None以强制每个文件一个分区:

df = dd.read_csv('myfiles.*.7z', storage_options={'compression': 'xz'},
                 blocksize=None)
© www.soinside.com 2019 - 2024. All rights reserved.