Как я могу передать в JSON фрейм данных с перекрывающимися именами между индексом и столбцами

#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.