如何将嵌套字典转换为pandas多索引数据框?
以下是一个例子:
dct={'outer':{}}
for i in dct:
dct[i]={'middle':{}}
for j in dct[i]:
dct[i][j]={}
for j in dct[i]:
dct[i][j]['inner']=10
print dct
输出:
{'outer': {'middle': {'inner': 10}}}
我想在pandas数据框中看到这样的内容:
outer middle inner value
inner2 value
middle2 inner value
outer2 middle inner value
inner2 value
middle2 inner value
我知道多索引是一种很好的方法,但我不知道如何制作数据框。任何人都可以给我一些指示吗?
答案 0 :(得分:2)
我认为您可以使用dict comprehension
创建的concat
DataFrame.from_dict
和stack
- 但输出为Series
MultiIndex
:< / p>
dct={'outer':{}, 'outer2':{}}
for i in dct:
dct[i]={'middle':{}, 'middle2':{}}
for j in dct[i]:
dct[i][j]={}
for j in dct[i]:
dct[i][j]['inner']=10
dct[i][j]['inner2']=20
print (dct)
{'outer2': {'middle2': {'inner': 10, 'inner2': 20},
'middle': {'inner': 10, 'inner2': 20}},
'outer': {'middle2': {'inner': 10, 'inner2': 20},
'middle': {'inner': 10, 'inner2': 20}}}
print (pd.concat({key:pd.DataFrame.from_dict(dct[key],orient='index')
for key in dct.keys()}))
inner inner2
outer middle 10 20
middle2 10 20
outer2 middle 10 20
middle2 10 20
df = pd.concat({key:pd.DataFrame.from_dict(dct[key], orient='index')
for key in dct.keys()}).stack()
print (df)
outer middle inner 10
inner2 20
middle2 inner 10
inner2 20
outer2 middle inner 10
inner2 20
middle2 inner 10
inner2 20
dtype: int64