我的字典看起来像这样:
{'x': {'b': 10, 'c': 20}, 'y': {'b': '33', 'c': 44}}
我想获得一个如下所示的数据框:
index col1 col2 val
0 x b 10
1 x c 20
2 y b 33
3 y c 44
我尝试调用 pandas.from_dict(),但它没有给我想要的结果。
那么,实现这一目标的最优雅、最实用的方法是什么?
编辑:实际上,我的字典深度为 4,所以我希望看到一种针对这种情况的解决方案,或者理想情况下,一种可以在一般设置中适用于任意深度的解决方案。
这是一个更深层次字典的例子:{'x':{'a':{'m':1, 'n':2}, 'b':{'m':10, 'n':20}}, 'y':{'a':{'m':100, 'n':200}, 'b':{'m':111, 'n':222}} }
适当的数据框应有 8 行。
回答:
df = pd.DataFrame([(k1, k2, k3, k4, k5, v) for k1, k2345v in dict.items()
for k2, k345v in k2345v.items()
for k3, k45v in k345v.items()
for k4, k5v in k45v.items()
for k5, v in k5v.items()])