将字典嵌套到数据框,将字典关键字保留为列而不是索引

时间:2018-11-19 02:23:21

标签: python pandas dictionary dataframe

字典的格式如下所示

{1:{'3450':0.235, '4380':0.47823},11:{'0430':0.128912,'0986':0.6267},14:{'8060':0.218912,'1234':0.6238}}

我可以创建一个如图所示的数据框

   chapter name  value
 0    1    3450  0.235
 1    1    4380  0.478
 2    11   0430  0.128912
 3    11   0986  0.6267
 4    14   8060  0.218912
 5    14   1234  0.6238

我尝试转换为数据框,但是我将该章作为索引,我需要将其作为列。

2 个答案:

答案 0 :(得分:1)

使用stack

df=pd.DataFrame(d).stack().reset_index()
df.columns=['name','chapter','value']
df
Out[113]: 
   name  chapter     value
0  0430       11  0.128912
1  0986       11  0.626700
2  1234       14  0.623800
3  3450        1  0.235000
4  4380        1  0.478230
5  8060       14  0.218912

答案 1 :(得分:0)

或手动:

df=pd.DataFrame(d).reset_index()
df['value']=df.pop(1).fillna(df.pop(11)).fillna(df.pop(14))
df['chapter']=sorted(list(d.keys())*2)
df.columns=['name','value','chapter']

那么现在:

print(df)

是:

   name     value  chapter
0  0430  0.128912        1
1  0986  0.626700        1
2  1234  0.623800       11
3  3450  0.235000       11
4  4380  0.478230       14
5  8060  0.218912       14

要重新排序列:

df=df[['chapter','name','value']]
相关问题