重新排列/组合字典中的数据框
Posted
技术标签:
【中文标题】重新排列/组合字典中的数据框【英文标题】:Re-arrange/combine dataframes in dictionaries 【发布时间】:2022-01-21 18:11:56 【问题描述】:我有一个由两个数据框组成的字典
dict_keys(['on_folds', 'global'])
每个数据框由两个系列组成
results['global'].keys() = Index(['rMSE', 'Bias'])
每个系列都有浮动索引
results['global']['rMSE'].keys() = Index(['lasso_reg', 'lasso_class'])
,
我想通过将旧字典的项目组合到数据框中来构建一个新字典
dict_keys(['lasso_reg', 'lass_class'])
系列
results['lasso_reg'].keys() = Index(['rMSE', 'Bias'])
浮动
results['lasso_reg']['rMSE'].keys() = Index(['on_folds', 'global'])
这本质上是索引的切换。我不确定转置或梳理是否会做到这一点。我该怎么做?
更新:这里是字典内容的例子
我有以下字典
'on_folds': rMSE 95% CI Bias SD
lasso_reg 1.690569 0.722917 3.257023 1.280235
lasso_class 2.616418 0.662500 4.025593 1.863953
xgb_class 6.899894 0.409375 9.261215 2.760382
xgb_reg 5.436057 0.482292 8.004550 2.138652
rf_reg 4.998613 0.659375 7.028649 2.291934
rf_class 3.820162 0.659375 6.436152 1.651670
我想把它改成这样
'lasso_reg': rMSE 95% CI Bias SD
on_folds 1.690569 0.722917 3.257023 1.280235
'lasso_class': rMSE 95% CI Bias SD
on_folds 1.690569 0.722917 3.257023 1.280235
etc.
【问题讨论】:
【参考方案1】:我仍然不确定你的数据是什么样的,但试试这个:
out =
for k, df in dct.items():
temp = df.loc[['lasso_reg','lass_class'],:]
temp.index = [k, k]
out.setdefault('lasso_reg', []).append(temp.iloc[0])
out.setdefault('lass_class', []).append(temp.iloc[1])
out = k: pd.concat(v) for k,v in out.items()
【讨论】:
成功了!谢谢!以上是关于重新排列/组合字典中的数据框的主要内容,如果未能解决你的问题,请参考以下文章
2022-01-07:下一个排列。实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数)。 如果不存在下一个更大的排列,则将数字重新排列成