Панды: Выровняйте вложенный словарь по вертикали

#python #pandas #dictionary

Вопрос:

У меня есть список словарей, как показано ниже:

 [{'name': 'jack', 'tagList': [{'tagId': '10', 'tagName': 'AB'},{'tagId': '20', 
'tagName': 'BC'}]}, 
 {'name': 'mike', 'tagList': [{'tagId': '30', 'tagName': 'DE'},{'tagId': '40', 
'tagName': 'FG'}]}]
 

Я хочу превратить это в фрейм данных, как показано ниже:

 Name   tagList_tagID   tagList_tagName      
Jack        10               AB
Jack        20               BC
mike        30               DE
mike        40               FG
 

Как я могу эффективно преобразовать этот список словарей в фрейм данных pandas.
Спасибо за помощь=)

Ответ №1:

Попробуйте с json.normalize :

 lst = [{'name': 'jack', 'tagList': [{'tagId': '10', 'tagName': 'AB'},
                                    {'tagId': '20', 'tagName': 'BC'}]}, 
       {'name': 'mike', 'tagList': [{'tagId': '30', 'tagName': 'DE'},
                                    {'tagId': '40', 'tagName': 'FG'}]}]

df = pd.json_normalize(lst, record_path="tagList", meta=["name"])

#formatting to match expected output
df = df.set_index("name").add_prefix("tagList_")

>>> df
     tagList_tagId tagList_tagName
name                              
jack            10              AB
jack            20              BC
mike            30              DE
mike            40              FG