将 Julia DataFrame 转换为字节数组以进行压缩

Sev*_*uls 2 julia dataframes.jl

因此,我从 csv 加载了两个数据集,然后使用以下命令合并它们leftjoin

using CSV
using DataFrames
using CodecZstd

df1 = CSV.read(joinpath(root, "data", "raw", "df1.csv"), DataFrame)
df2 = CSV.read(joinpath(root, "data", "raw", "df2.csv"), DataFrame)

merged = leftjoin(df1, df2, on=:id)
Run Code Online (Sandbox Code Playgroud)

现在我想将合并的数据帧作为.zst现在我想将合并的数据帧作为压缩文件(Zstandard 压缩)

我成功地首先写入,.csv然后读取,然后再次写入.zst,但是有没有办法直接将 a 转换DataFrame为字节数组以便能够保存到磁盘?

Prz*_*fel 5

要准确遵循您的问题,您可以执行以下操作:

\n
using CSV, DataFrames, CodecZstd\nfout = ZstdCompressorStream(open("z.zst","w"))\ndf = DataFrame(a='a':'h', b=1:8)\nCSV.write(df ,fout)\nclose(fout)\n
Run Code Online (Sandbox Code Playgroud)\n

现在这可以读作:

\n
julia> CSV.read(ZstdDecompressorStream(open("z.zst")), DataFrame)\n8\xc3\x972 DataFrame\n Row \xe2\x94\x82 a        b\n     \xe2\x94\x82 String1  Int64\n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n   1 \xe2\x94\x82 a            1\n   2 \xe2\x94\x82 b            2\n   3 \xe2\x94\x82 c            3\n   4 \xe2\x94\x82 d            4\n   5 \xe2\x94\x82 e            5\n   6 \xe2\x94\x82 f            6\n   7 \xe2\x94\x82 g            7\n   8 \xe2\x94\x82 h            8\n
Run Code Online (Sandbox Code Playgroud)\n

其他合理的选择是使用 Apache Arrow 来编写 DataFrame 而不是 CSV。压缩将以与上述相同的方式进行。

\n