如何使用Pandas使用Zstandard压缩镶木地板文件

时间:2019-10-28 16:54:09

标签: python pandas dataframe zstandard

我正在使用熊猫通过以下命令将数据帧转换为.parquet文件:

df.to_parquet(file_name, engine='pyarrow', compression='gzip')

我需要使用zstandard作为压缩算法,但是上面的函数仅接受gzip,snappy和brotli。我试过有没有办法在此功能中包括zstd?如果没有,我该如何使用其他软件包?我尝试使用zstandard,但似乎只接受类似字节的对象。

2 个答案:

答案 0 :(得分:4)

我通常将zstandard用作数据帧的压缩算法。

这是我用来(稍微简化)编写那些实木复合地板文件的代码:

import pandas as pd
import pyarrow.parquet as pq
import pyarrow as pa

parquetFilename = "test.parquet"

df = pd.DataFrame(
    {
        "num_legs": [2, 4, 8, 0],
        "num_wings": [2, 0, 0, 0],
        "num_specimen_seen": [10, 2, 1, 8],
    },
    index=["falcon", "dog", "spider", "fish"],
)

df = pa.Table.from_pandas(df)
pq.write_table(df, parquetFilename, compression="zstd")

并阅读以下镶木地板文件:

import pandas as pd
import pyarrow.parquet as pq
import pyarrow as pa

parquetFilename = "test.parquet"
df = pq.read_table(parquetFilename)
df = df.to_pandas()

有关更多详细信息,请访问以下网站以获取更多信息:

最后是blog post I wrote的无耻插头。它涉及使用pyarrow在镶木地板文件中zstandard和快照压缩的速度与空间平衡之间的关系。它与您的问题无关,并且包含一些更多的以zstandard读写镶木地板文件的“真实世界”代码示例。我实际上也将很快写一份后续报告。如果您有兴趣,请告诉我。

答案 1 :(得分:0)

似乎尚不支持:

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_parquet.html

压缩{'snappy','gzip','brotli',无},默认为'snappy'名称 使用的压缩方式。使用“无”表示不压缩。