【发布时间】:2019-07-10 17:13:50
【问题描述】:
我有许多 .7z 文件,每个文件都包含许多大型 CSV 文件(超过 1GB)。如何在 python 中读取这个(尤其是 pandas 和 dask 数据框)?我应该将压缩格式更改为其他格式吗?
【问题讨论】:
标签: pandas csv dataframe dask 7zip
我有许多 .7z 文件,每个文件都包含许多大型 CSV 文件(超过 1GB)。如何在 python 中读取这个(尤其是 pandas 和 dask 数据框)?我应该将压缩格式更改为其他格式吗?
【问题讨论】:
标签: pandas csv dataframe dask 7zip
我相信您应该能够使用
打开文件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'};然而,随机访问在一个文件中可能是低效的,所以你应该添加blocksize=None来强制每个文件一个分区:
df = dd.read_csv('myfiles.*.7z', storage_options={'compression': 'xz'},
blocksize=None)
【讨论】: