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

标签 pandas csv dataframe dask 7zip

我有许多 .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/

相关文章:

python-3.x - 加速 Pandas 迭代

python - 无法调用python中的函数

python - 根据另一列计算行之间的差异_Pandas

Mysql CSV 导入 - 最后一个字段的问题

python - 根据 diff 过滤 DataFrame,其中 bool 值重复

python - Pandas 将混合 float/int 类型列的 int 元素读取为 nan

Python:我们如何匹配回归模型的预测值和真值

r - 使用 read.zoo 中的 Fun 更改日期格式

python - 将 CSV 转换为 JSON,同时删除某些列

python - 在 python 中使用 unique 函数时保持顺序