gpt4 book ai didi

python - 如何将 Pandas 序列化为 MessagePack 格式作为 python 缓冲区/内存 View ?

转载 作者:行者123 更新时间:2023-12-01 04:43:53 37 4
gpt4 key购买 nike

Pandas 有一个 DataFrame.to_msgpack()将数据帧序列化为 MessagePack 的方法格式。

它需要一个文件路径或一个“类似缓冲区”的对象。如果未提供,则它将返回字符串表示形式的数据。

我的问题是如何正确地将这些数据保存为类似缓冲区的对象,而不先将其保存为字符串?

#1
string_data = df.to_msgpack() # returns data as string

#2
memory_buffer = memory view(df.to_msgpack()) # creates a memory view from string

#3
df.to_msgpack('filename.msg') # return data as binary file

#4
memory_buffer = memoryview(b'')
df.to_msgpack(memory_buffer, append=True) # would this work?

在场景 4 中,df.to_msgpack() 需要一个类似缓冲区的对象,而 memoryview() 需要一个输入参数。因此,必须创建一个“空”内存 View ,然后将其传递给 to_msgpack() 方法。然后附加数据。虽然我想知道这是否会在解压数据时导致伪影。

对于场景 2,认为字符串的内存 View 相当于字节数组是否正确?

最佳答案

仔细阅读 pandas 源代码后,似乎执行此操作的方法是使用 python 的 io.BytesIO() 作为缓冲区:

buffer = io.BytesIO()
df.to_msgpack(buffer, append=False, compress='zlib')

这看起来效果很好。请注意,压缩选项在版本 0.16.0 中显得有点不稳定,但似乎在 master 中得到了解决。

关于python - 如何将 Pandas 序列化为 MessagePack 格式作为 python 缓冲区/内存 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29926691/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com