pyarrow与bytes序列化逆操作:从gzip压缩串还原pandas DataFrame
DataFrame序列化后的反序列化实现代码
你当前的序列化逻辑是按「DataFrame→PyArrow序列化→转缓冲区→转十六进制字符串→gzip压缩」的顺序执行的,反序列化仅需要将步骤倒序执行即可,完整可运行代码如下:
import pandas as pd import numpy as np import gzip import pyarrow as pa # 原有序列化逻辑 context = pa.default_serialization_context() df = pd.DataFrame(data=np.array([[1,2,3],[4,5,8]]), columns=['a','b','c']) x = gzip.compress(context.serialize(df).to_buffer().hex()) # 从x还原得到df的命令 restored_df = context.deserialize(bytes.fromhex(gzip.decompress(x).decode()))
- 可通过以下命令验证还原结果是否正确:
print(df.equals(restored_df)) # 输出为True则证明还原成功
注意:PyArrow 7.0及以上版本已将default_serialization_context标记为弃用接口,高版本环境更推荐直接使用pa.serialize_pandas和pa.deserialize_pandas实现序列化需求,兼容性和性能更优
内容的提问来源于stack exchange,提问作者DDR
相关产品推荐
相关产品推荐

