Переделать Словарь, где значения это список из списков в DataFrame

У меня есть словарь, где значения это список из списков. Могу ли этот словарь переделать в DataFrame таким образом, чтобы: ключ был первой - колонкой, а первое значения из вложенного списка - второй колонкой, второе значение из списка - третей колонкой

Исходный словарь:

dct = {101:[['apple', 'fruit'], ['orange', 'fruit'], ['cat', 'animal']],
       102:[['dog', 'animal'], ['banana', 'fruit']],
       103:[['horse', 'animal'], ['giraffe', 'animal'], ['mouse', 'animal']]
       }

Желаемый вид DataFrame:

Column_1    Column_2    Column_3
101         apple       fruit
101         orange      fruit
101         cat         animal
102         dog         animal
102         banana      fruit
103         horse       animal
103         giraffe     animal
103         mouse       animal

Ответы (1 шт):

Автор решения: strawdog

Сначала вам нужно преобразовать списки в словаре так, чтобы они удовлетворяли условию. Далее преобразуем словарь в датафрейм и производим распаковку:

import pandas as pd

dct = {101:[['apple', 'fruit'], ['orange', 'fruit'], ['cat', 'animal']],
       102:[['dog', 'animal'], ['banana', 'fruit']],
       103:[['horse', 'animal'], ['giraffe', 'animal'], ['mouse', 'animal']]
       }

tmp = {k:list(zip(*v)) for k, v in dct.items()}

df = pd.DataFrame.from_dict(tmp, orient="index")

res = df.apply(pd.Series.explode)

print(res)
          0       1
101    apple   fruit
101   orange   fruit
101      cat  animal
102      dog  animal
102   banana   fruit
103    horse  animal
103  giraffe  animal
103    mouse  animal

Если необходимо еще и автоматически присваивать названия колонок для результирующего датафрейма, то можно добавить код:

res.columns = [f"Column_{x}" for x in range(res.shape[1])]

получите res:

    Column_0 Column_1
101    apple    fruit
101   orange    fruit
101      cat   animal
102      dog   animal
102   banana    fruit
103    horse   animal
103  giraffe   animal
103    mouse   animal
→ Ссылка