Сериализация и десериализация DataFrame с кириллицей

Если требуется хранить Dataframes в JSON, и они содержат non-ASCII символы (например, кириллицу), то следуется понимать, что используя df.to_json() мы при дисериализации будем получать другой порядок столбцов, т.к. все non-ASCII столбцы будут перенесены в конец датафрейма. Поэтому стоит указать df.to_json(orient='recors'), и сохранить индексы в один из столбцов датафрейма: df['index'] = pd.Series(df.index, index=df.index), а при десериализации использовать указанный столбец как индексы:

def serialize_df(df):
    df['index'] = pd.Series(df.index, index=df.index)
    res = df.to_json(orient='records')
    return dumps(res)

def deserialize_df(df):
    results = loads(df)
    res = DataFrame.from_records(loads(results))
    index = res.pop("index").tolist()
    res.index = index
    return res

Таким образом на выходе мы получим идентичный датафрейм:
df.compare(deserialized_df)

0

Автор публикации

не в сети 1 месяц

art610

1000K
Lnovus Support
Комментарии: 0Публикации: 41Регистрация: 04-06-2022
Оцените материал
( Пока оценок нет )
Locus Novus
Добавить комментарий

Авторизация
*
*
Регистрация
*
*
*
Пароль не введен
Генерация пароля