Переделать Словарь, где значения это список из списков в 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