首页 > 解决方案 > 如何将嵌套字典列表转换为 pandas 数据框?

问题描述

要转换为 df 的列表:

final_list = [{'ID1':{'word':'4', 'talk': '4}}, {'ID2': {'cat':'3', 'dog': '3'}}, {'ID3': {'potatoes':'8', 'height': '6'}}]

预期输出

       Word     Number  Category 
0      word     4       ID1
1      talk     4       ID1
2      cat      3       ID2
3      dog      3       ID2
4      potatoes 8       ID3
5      height   6       ID3

我已经创建了一个数据框,可以在其中获取所需的 Word 和 Number 列。从这个数据框中,我试图将 final_list 的“类别”键添加为第三列。这显然不起作用,因为我在循环时只得到最后一个关键元素。这只是为了展示我的思路。

我的编码尝试

df = pd.DataFrame([(a, b) for item in another_list for a, b in item.items()], 
                   columns=['Word','Number'])

## add the last desired column (failed attempt)
for item in final_list:
    for k,v in item.items():
        df_events["Category"] = k


标签: pythonpandaslistdictionarynested

解决方案


有必要为元组列表展平内部字典添加 next for 语句:

df = pd.DataFrame([(k,v, a) for item in final_list 
                            for a, b in item.items() 
                            for k, v in b.items()],
                   columns=['Word','Number','Category'])
print (df)
       Word Number Category
0      word      4      ID1
1      talk      4      ID1
2       cat      3      ID2
3       dog      3      ID2
4  potatoes      8      ID3
5    height      6      ID3

推荐阅读