My dictionary is as follows:
{'x': {'b': 10, 'c': 20}, 'y': {'b': '33', 'c': 44}}
I want to get a dataframe that looks like this:
index col1 col2 val
0 x b 10
1 x c 20
2 y b 33
3 y c 44
I tried calling pandas.from_dict (), but it did not give me the desired result. So what is the most elegant, practical way to achieve this?
EDIT: In fact, my dictionary has a depth of 4, so I would like to see a solution for this case or, ideally, one that will work at an arbitrary depth in the overall setup.
Here is an example of a deeper dictionary: The
{'x':{'a':{'m':1, 'n':2}, 'b':{'m':10, 'n':20}}, 'y':{'a':{'m':100, 'n':200}, 'b':{'m':111, 'n':222}} }corresponding data block should contain 8 lines.
ANSWER:
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()])