我试图将pandas对象(DataFrame
或Series
)序列化为json。由于我控制线路的两侧,所以我希望使用更低级的格式来提交时区和频率信息(因此不使用pd.DataFrame.to_json
)。在
以前我用to_msgpack
来做这个。但不知何故,这在熊猫0.25中被否决了。相反,文档建议使用pyarrow
我已经完成了从pandas实例到bytes再到pandas的往返:
import pandas as pd
import pyarrow as pa
index = pd.date_range("2019-01-01", freq="15Min", periods=35040, tz="Europe/Berlin")
df = pd.DataFrame(dict(v=pd.np.random.rand(35040)), index=index)
df.head()
buffer = pa.serialize(df).to_buffer()
bytes_ = buffer.to_pybytes()
pa.deserialize(bytes_)
(这是使用messagepack速度的两倍,所以谢谢箭头)
但不幸的是,字节不是json可序列化的。当我试图破译它们时
^{pr2}$UnicodeDecodeError: 'utf-8' codec can't decode byte 0x84 in position 0: invalid start byte
所以我试着chardet
找出编码。在
import chardet
chardet.detect(bytes_)
{'encoding': None, 'confidence': 0.0, 'language': None}
有人知道我怎么做字节到str的转换吗?或者,是否有更好的可能性通过json序列化保留所有元数据的pandas实例?在
目前没有回答
相关问题 更多 >
编程相关推荐