@Fenix888molo

Как передать dataframe в JSON и обратно?

Создаю df из Google sheets

В дальнейшем работаю с ней через pandas

dataframe = pd.DataFrame(worksheet.get_all_records())

Я работаю с сервисом в который передаю данные в формате JSON, x = json.damps("y": y, "dataframe": dataframe)

Как мне правильно передать dataframe, чтобы потом вернуть его обратно и обрабатывать с помощью pandas.

dataframe на сервисе не обрабатываются, просто нужно для сохранения данных и для работы в python.

Вот как получилось:

worksheet = sh.get_worksheet(0)
df = pd.DataFrame(worksheet.get_all_records())
dx = df.to_json(orient='split')

datajs = json.dumps({"datj": dx})
dx = json.loads(datajs["datj"])

dg = pd.read_json(dx, orient='split')

print(dg)

Как передать правильно?5fd4df9ef123f538260849.jpeg
  • Вопрос задан
  • 1686 просмотров
Пригласить эксперта
Ответы на вопрос 3
@OlegPyatakov
pyatakov.com
Ответ написан
Комментировать
@o5a
to_json формирует текстовую строку формата json из словаря данных dataframe
to_dict формирует сам словарь

Соответственно, если пытаетесь сделать так:
dx = df.to_json(orient='split')
datajs = json.dumps({"datj": dx})

то datajs - это строка, а не словарь, поэтому брать от нее значения по ключу не получится
"datj" нужно брать не от datajs, а от dx
dx = json.loads(datajs)
dg = pd.read_json(dx["datj"], orient='split')


И если как написано изначально, вы передаете json в параметре x = json.damps("y": y, "dataframe": dataframe)
то можно в "dataframe" передать словарь, который потом и закодируется в json через dumps
x = json.dumps("y": y, "dataframe": df.to_dict(orient='split'))
Ответ написан
@Fenix888molo Автор вопроса
Вот это помогло

resultat = json.dumps({"buttons": json.dumps(but), "status": kat_status, "df_mag": df.to_json(orient='records')})

x = json.loads(data["df_mag"])
df = pd.read_json(x, orient='records')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект