如何使用pandas使用zstandard压缩parquet文件

alc*_*cor 4 python dataframe pandas zstandard

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

df.to_parquet(file_name, engine='pyarrow', compression='gzip')
Run Code Online (Sandbox Code Playgroud)

我需要使用 zstandard 作为压缩算法,但上面的函数只接受 gzip、snappy 和 brotli。我试过了 有没有办法在这个函数中包含 zstd?如果没有,我怎么能用其他包做到这一点?我尝试使用zstandard,但它似乎只接受类似字节的对象。

lds*_*nds 5

我通常使用 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")
Run Code Online (Sandbox Code Playgroud)

并阅读这些镶木地板文件:

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()
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅这些站点以获取更多信息:

终于为我写一篇博文加了一个无耻的插件。它是关于使用 pyarrow 在镶木地板文件中 zstandard 和 snappy 压缩的速度与空间平衡。它与您的问题有关,并包含一些在 zstandard 中读取和写入镶木地板文件的更多“真实世界”代码示例。我实际上也会很快写一篇后续文章。如果你有兴趣让我知道。


Ist*_*van 0

好像还不支持:

\n\n

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

\n\n
\n

压缩{\xe2\x80\x98snappy\xe2\x80\x99, \xe2\x80\x98gzip\xe2\x80\x99, \xe2\x80\x98brotli\xe2\x80\x99, 无}, 默认 \xe2\x80\ x98snappy\xe2\x80\x99 要使用的压缩的名称\n。使用 None 表示不进行压缩。

\n
\n