重新排列/组合字典中的数据框

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:下一个排列。实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数)。 如果不存在下一个更大的排列,则将数字重新排列成

python - 如何按python中的因子级别对pandas数据框中的行进行重新排序?

将数据框中的 NaN 转换为零

如何重新排列javascript循环中的数字?

用 Pandas 数据框中的行填充嵌套字典

A - Dogs and Cages HDU - 6243(组合数学)