如何将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
相关产品推荐
相关产品推荐

