熊猫:插入后重新索引多层列

时间:2019-11-12 17:38:30

标签: python pandas

从两级列数据帧开始,我通过以下方式在第二级添加一列:

for metric in ('test_EER', 'test_AUC'):
    baseline = summary_df[metric]['lower_confidence_bound']['dummy']
    summary_df[metric, 'improvement'] = (summary_df[metric]['lower_confidence_bound'] -baseline)/baseline

这给了我一个无序的列索引,看起来像:

final dataframe

如何重新索引列,以使('test_AUC','improvement')适合在('test_EER')之前。另外,我也不想更改顺序平均值,std,lcb,改进。

2 个答案:

答案 0 :(得分:1)

对于您而言,手动安排将起作用:

cols = pd.MultiIndex.from_product((['test_AUC', 'test_EER'],
                                   ['mean', 'std', 'lower_bound', 'improvement']
                                  )
                                 )

df[cols]

输出:

  test_AUC                             test_EER                            
      mean std lower_bound improvement     mean std lower_bound improvement
0        0   0           0         0.6        0   0           0         0.1

答案 1 :(得分:0)

概括@QuangHoang的答案:

cols = pd.MultiIndex.from_product( df.columns.levels)
df = df[cols]

将对其他列标签进行排序。