import_optional_dependency("pyarrow")
from pyarrow import feather
ioargs = get_filepath_or_buffer(path, mode="wb", storage_options=storage_options)
if not isinstance(df, DataFrame):
raise ValueError("feather only support IO with DataFrames")
valid_types = {"string", "unicode"}
// validate index
// --------------
// validate that we have only a default index
// raise on anything else as we don"t serialize the index
if not isinstance(df.index, Int64Index):
typ = type(df.index)
raise ValueError(
f"feather does not support serializing {typ} "
"for the index; you can .reset_index() to make the index into column(s)"
)
if not df.index.equals(RangeIndex.from_range(range(len(df)))):
raise ValueError(
"feather does not support serializing a non-default index for the index; "
"you can .reset_index() to make the index into column(s)"
)
if df.index.name is not None:
raise ValueError(
"feather does not serialize index meta-data on a default index"
)
// validate columns
// ----------------
// must have value column names (strings only)
if df.columns.inferred_type not in valid_types:
raise ValueError("feather must have string column names")
feather.write_feather(df, ioargs.filepath_or_buffer, **kwargs)
ioargs.close()
def read_feather(
path, columns=None, use_threads: bool = True, storage_options: StorageOptions = None