gpt4 book ai didi

python - 将 Pandas DataFrame 与 In-Memory Feather 相互转换

转载 作者:行者123 更新时间:2023-12-01 13:19:44 26 4
gpt4 key购买 nike

使用 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)

但是,使用相同的缓冲区转换回 DataFrame
pd.read_feather(buf)

导致错误:

ArrowInvalid: Not a feather file



如何将 DataFrame 转换为内存中的羽化表示,并相应地转换回 DataFrame?

预先感谢您的考虑和回复。

最佳答案

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)返回:
    a    b
0 1 3.0
1 2 4.0

如果您有 DataFrame如果有多个索引,您可能会看到类似的错误

ValueError: feather does not support serializing for the index; you can .reset_index()to make the index into column(s)



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

我想补充的最后一件事是,如果您正在使用 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')

关于python - 将 Pandas DataFrame 与 In-Memory Feather 相互转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50761777/

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