#python #json #pandas #dataframe
Вопрос:
Мне нужно преобразовать фреймы данных в формате JSON, подобные этому:
col1 col2 col3
col1 col2 col3
1 a 10 1 a 10
2 b 11 2 b 11
3 c 12 3 c 12
Однако, когда я запускаю df.to_json(orient='table')
, я получаю исключение ValueError: Overlapping names between the index and columns
. Я понимаю, почему это происходит, но мне действительно хотелось бы знать, есть ли простой способ обойти ошибку. Все, что мне нужно, — это преобразовать фрейм данных в JSON с сохранением тех же индексов, а при его восстановлении получить исходный фрейм данных.
Здесь я оставляю фрагмент кода, чтобы вы могли воспроизвести сценарий.
import pandas as pd
df = pd.DataFrame({'col1': [1, 2, 3], 'col2': ['a', 'b', 'c'], 'col3': [10, 11, 12]})
df = df.set_index(keys=['col1', 'col2', 'col3'], drop=False)
df.to_json(orient='table')
Комментарии:
1. Каков ожидаемый результат? Ваш фрейм данных и так не имеет для меня смысла, что значит иметь все столбцы в индексе? Почему у вас есть и то, и другое? Есть ли другие столбцы, которые вы не показываете, которые не входят в индекс? Если да, то почему бы не использовать
drop=True
вset_index
?2. Я тоже понятия не имею, это алгоритм, который я получил, и мне нужно заставить его работать в нашем рабочем процессе. Как бы то ни было, смысл фрейма данных не имеет значения. То, что я хочу в качестве вывода, — это тот же кадр данных, но в формате CSV или JSON.