将Pandas数据帧转换为内存功能(&F)

2024-05-21 06:59:49 发布

您现在位置:Python中文网/ 问答频道 /正文

使用IO tools in pandas可以将DataFrame转换为内存中的特征缓冲区:

import pandas as pd  
from io import BytesIO 

df = pd.DataFrame({'a': [1,2], 'b': [3.0,4.0]})  

buf = BytesIO()

df.to_feather(buf)

但是,使用相同的缓冲区转换回数据帧

^{pr2}$

导致错误:

ArrowInvalid: Not a feather file

如何将数据帧转换为内存中的特征表示,并相应地转换回数据帧?

提前感谢您的考虑和回应。在


Tags: 数据内存inioimportdataframepandasdf
1条回答
网友
1楼 · 发布于 2024-05-21 06:59:49

使用pandas==0.25.2可以通过以下方式实现:

import pandas
import io
df = pandas.DataFrame(data={'a': [1, 2], 'b': [3.0, 4.0]})
buf = io.BytesIO()
df.to_feather(buf)
output = pandas.read_feather(buf)

然后调用output.head(2)返回:

^{pr2}$

如果您有一个包含多个索引的DataFrame,您可能会看到如下错误

^{bq}$

在这种情况下,您需要在to_feather之前调用.reset_index(),在read_feather之后调用.set_index([...])


我想补充的最后一件事是,如果您正在使用BytesIO执行某些操作,则需要在写入特征字节之后返回到0。例如:

buffer = io.BytesIO()
df.reset_index(drop=False).to_feather(buffer)
buffer.seek(0)
s3_client.put_object(Body=buffer, Bucket='bucket', Key='file')

相关问题 更多 >