我有许多 .7z
文件,每个文件都包含许多大型 CSV
文件(超过 1GB)。我如何在 python 中读取它(尤其是 pandas 和 dask 数据框)?我应该将压缩格式更改为其他格式吗?
最佳答案
我相信您应该能够使用
打开文件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)
关于pandas - 如何读取包含许多 CSV 文件的许多大型 .7z 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54728318/