Using the IO tools in pandas it is possible to convert a DataFrame
to an in-memory feather buffer:
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)
However, using the same buffer to convert back to a DataFrame
pd.read_feather(buf)
Results in an error:
ArrowInvalid: Not a feather file
How can a DataFrame be convert to an in-memory feather representation and, correspondingly, back to a DataFrame?
Thank you in advance for your consideration and response.
With
pandas==0.25.2
this can be accomplished in the following way:Then a call to
output.head(2)
returns:If you have a
DataFrame
with multiple indexes, you may see an error likeIn which case you need to call
.reset_index()
beforeto_feather
, and call.set_index([...])
afterread_feather
Last thing I would like to add, is that if you are doing something with the
BytesIO
, you need to seek back to 0 after writing the feather bytes. For example: