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

问题描述 投票:2回答:1

我有一个数据帧:

             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}

如何使用熊猫实现这一目标?

python pandas dictionary dataframe
1个回答
1
投票

使用unstack和flatten indices,最后调用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}
© www.soinside.com 2019 - 2024. All rights reserved.