使用索引和列名称给出的键将数据框展平为字典

时间:2018-02-13 14:04:41

标签: python pandas dictionary dataframe

我有一个数据框:

             v1        v2        v3
c1
a      1.593979  1.679763  1.613202
n      1.327004  2.551197  1.492442
z      1.615528  1.156273  1.817987

我想从数据框创建一个字典。 我知道我可以做到

d = {str(i): v for i,v in enumerate(var.values.flatten()))}

并创建一个包含项目1.593979,1.679763 , ...和密钥'0','1','2'等的词典......

但是,我希望我的新词典的键是原始列和索引名称的组合,例如。

dict_result={'v1_a':1.593979,'v2_a':1.679763,...,'v3_z':1.817987}

如何使用pandas实现这一目标?

1 个答案:

答案 0 :(得分:1)

使用unstack并展平索引,最后一次调用to_dict

s = df.unstack()
s.index = s.index.map('_'.join)
#alternative
#s.index = ['{}_{}'.format(x, y) for x, y in s.index ]

d = s.to_dict()
print (d)
{'v2_n': 2.551197, 'v1_a': 1.593979, 'v1_n': 1.327004, 
'v2_a': 1.6797630000000001, 'v3_z': 1.8179869999999998, 
'v3_n': 1.492442, 'v1_z': 1.615528, 'v2_z': 1.1562729999999999, 'v3_a': 1.613202}