Извлечение значений ключей словаря с каждого уровня в строки в кадре данных с разной структурой на каждом уровне.Python

Программы на Python
Ответить
Anonymous
 Извлечение значений ключей словаря с каждого уровня в строки в кадре данных с разной структурой на каждом уровне.

Сообщение Anonymous »

Как извлечь значения ключей словаря с каждого уровня в кадр данных? Я использовал pd.json_normalize, но он не соответствует моим потребностям, поскольку предыдущие ключи используются в качестве префиксов. Это то, что я пробовал

Код: Выделить всё

import pandas as pd

myfamily = {
"child1" :
{
"name" : "Emil",
"year" : 2004
},
"child2" :
{
"name" : "Tobias",
"year" : 2007,
"child3":
{
"name" : "Ken",
"year" : 2003
}
}
}

df = pd.json_normalize(myfamily, sep='_')
Мне нужен результат

Код: Выделить всё

pd.DataFrame({"name":["Emil","Tobias","Ken"],"year":[2004,2007,2003]})
Предположим, словарь вложен гораздо глубже и имеет аналогичную структуру на каждом уровне, как в примере. Однако мне бы хотелось, чтобы что-то работало, когда порядок и количество ключей на каждом уровне различны. Например, этот словарь должен давать тот же результат. Также я заранее знаю все названия клавиш.

Код: Выделить всё

myfamily = {
"child1" :
{
"name" : "Emil",
"year" : 2004
},
"child2" :
{
"name" : "Tobias",
"year" : 2007,
"child3":
{
"year" : 2003
"name" : "Ken",

}
}
}
Этот словарь

Код: Выделить всё

myfamily = {
"child1" :
{
"name" : "Emil",
"year" : 2004
},
"child2" :
{
"name" : "Tobias",
"year" : 2007,
"age"  : 1
}
}
должен дать результат

Код: Выделить всё

pd.DataFrame({"name":["Emil","Tobias"],"year":[2004,2007],"age":[None,1]})


Подробнее здесь: https://stackoverflow.com/questions/798 ... with-diffe
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»