从嵌套字典构造熊猫多索引数据框
Posted
技术标签:
【中文标题】从嵌套字典构造熊猫多索引数据框【英文标题】:construct pandas multi index dataframe from nested dictionary 【发布时间】:2021-06-21 18:49:44 【问题描述】:我想在这里从嵌套字典构建熊猫数据框:
res = 'loss': 'first_neuron': 10: 0.6430850658151839,
12: 0.6419735709090292,
14: 0.628668905776224,
'lr': 0.001: 0.7243950462635652,
0.01: 0.6431898441579607,
0.1: 0.5461426520789111,
'accuracy': 'first_neuron': 10: 0.6125457246362427,
12: 0.6154635353588763,
14: 0.6285751049901233,
'lr': 0.001: 0.5127914948963824,
0.01: 0.6298153875050722,
0.1: 0.7139774825837877
到这里:
在尝试了here 和here 的类似问题后,我无法正确回答
【问题讨论】:
【参考方案1】:您的 dict 包含许多嵌套级别,它们不适合 pandas。您可以先将 dict 解析为更简单的 dict,然后稍微操作数据框:
from collections import defaultdict
tmp = defaultdict(list)
for key1, value1 in res.items():
for key2, value2 in value1.items():
for key3, value3 in value2.items():
tmp['metric'].append(key1)
tmp['index1'].append(key2)
tmp['index2'].append(key3)
tmp['value'].append(value3)
df = (
pd.DataFrame(tmp)
.pivot(index=['index1', 'index2'], columns='metric')
.droplevel(0, axis=1)
.rename_axis(columns=None)
)
结果:
accuracy loss
index1 index2
first_neuron 10.000 0.612546 0.643085
12.000 0.615464 0.641974
14.000 0.628575 0.628669
lr 0.001 0.512791 0.724395
0.010 0.629815 0.643190
0.100 0.713977 0.546143
【讨论】:
以上是关于从嵌套字典构造熊猫多索引数据框的主要内容,如果未能解决你的问题,请参考以下文章