Преобразование кортежа и вложенного словаря в DataFrame

У меня есть следующий код в моей функции get_context_data(self, **kwargs):

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['uploaded'] = self.request.session['uploaded']
        context['selection'] = self.request.session['selection']
        dict_comparaison_p1 = dict(enumerate(context['uploaded'].items()))
        list_comparaison_p2 = context['selection']
        dict_comparaison_p2 = {number: dict_comparaison_p1[number] for number in list_comparaison_p2}
        pprint(dict_comparaison_p2)

Мой dict_comparaison_p2 имеет следующий вывод:

{0: ('Product', {'0': 'Smartwatch', '1': 'Shoes', '2': 'Necklace'}),
 1: (' Weight', {'0': 2, '1': 50, '2': 40}),
 2: (' Price', {'0': 100, '1': 240, '2': 230})}

Я хочу преобразовать его в DataFrame следующим образом:

      Product   Weight   Price
0  Smartwatch        2     100
1       Shoes       50     240
2    Necklace       40     230

Но когда я пытаюсь преобразовать его с помощью моего вывода, я получаю следующий результат:

                                                   0                           1                               2
0                                            Product                      Weight                           Price
1  {'0': 'Smartwatch', '1': 'Shoes', '2': 'Neckla...  {'0': 2, '1': 50, '2': 40}  {'0': 100, '1': 240, '2': 230}

Не могли бы вы помочь мне с этим?

Спасибо!

Один из возможных способов сделать это:

import pandas as pd

d = {0: ('Product', {'0': 'Smartwatch', '1': 'Shoes', '2': 'Necklace'}),
     1: (' Weight', {'0': 2, '1': 50, '2': 40}),
     2: (' Price', {'0': 100, '1': 240, '2': 230})}

d_col = {}
df = pd.DataFrame()
idx = 0
for k,v in d.items():
    d_col[k] = v[0]
    df = df.append(pd.DataFrame(data=v[1],index=[idx]))
    idx+=1

df = df.T.rename(columns = d_col)
print(df)

Я разбиваю кортеж на части и манипулирую информацией по мере необходимости. Сначала создаю словарь под названием d_col. Я добавляю нужные нам данные в изначально пустой DataFrame и продолжаю добавлять. Позже я использую словарь d_col для того, чтобы обозначить df.T правильными именами столбцов на основе индекса, так как я установил эти индексы на основе idx ранее в цикле.

Выход:

      Product  Weight  Price
0  Smartwatch       2    100
1       Shoes      50    240
2    Necklace      40    230
Вернуться на верх