You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Julia DataFrame直接转为字节数组并保存为Zstandard压缩文件

直接将DataFrame转为Zstandard压缩字节流保存到磁盘

当然可以跳过中间CSV文件,直接在内存中将DataFrame转为字节流,再用Zstandard压缩后写入磁盘。以下是具体实现方案:

依赖准备

先确保安装所需库:

pip install pandas zstandard

完整代码示例

import pandas as pd
import zstandard as zstd
import io

# 1. 加载并合并数据集(替换成你的实际逻辑)
df1 = pd.read_csv("data1.csv")
df2 = pd.read_csv("data2.csv")
merged_df = df1.merge(df2, how="left", on="关联列名")  # 替换为你的关联列

# 2. 内存中生成CSV字节流并压缩写入磁盘
# 方法一:用缓冲区流式处理(适合大文件,内存占用更低)
buffer = io.BytesIO()
merged_df.to_csv(buffer, index=False, encoding="utf-8")
buffer.seek(0)  # 重置缓冲区指针到起始位置

compressor = zstd.ZstdCompressor()
with open("merged_data.csv.zst", "wb") as f:
    compressor.copy_stream(buffer, f)

# 方法二:直接转换为字节后压缩(适合小文件,代码更简洁)
# csv_bytes = merged_df.to_csv(index=False, encoding="utf-8").encode("utf-8")
# compressed_bytes = compressor.compress(csv_bytes)
# with open("merged_data.csv.zst", "wb") as f:
#     f.write(compressed_bytes)

验证读取

如果需要还原DataFrame,可以用以下代码:

decompressor = zstd.ZstdDecompressor()
with open("merged_data.csv.zst", "rb") as f:
    decompressed_data = decompressor.decompress(f.read())
    restored_df = pd.read_csv(io.BytesIO(decompressed_data))

优势说明

这种方式省去了中间临时CSV文件的磁盘IO操作,既节省磁盘空间,也提升了处理效率,尤其适合处理大型数据集时减少磁盘读写开销。

内容的提问来源于stack exchange,提问作者psych0groov3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 04:55:01