将MultiIndex列合并为1级

时间:2017-08-25 09:24:23

标签: python pandas dataframe multi-index

以下是另一个问题的一些数据:

date       type       value
1/1/2016   a          1
1/1/2016   b          2
1/1/2016   a          1
1/1/2016   b          4
1/2/2016   a          1
1/2/2016   b          1

运行以下代码:

x = df.groupby(['date', 'type']).value.agg(['sum', 'max']).unstack()

x应如下所示:

         sum    max   
type       a  b   a  b
date                  
1/1/2016   2  6   1  4
1/2/2016   1  1   1  1

我想将上层和下层的列组合起来得到这个:

           sum_a  sum_b   max_a  max_b
date                  
1/1/2016   2       6        1       4
1/2/2016   1       1        1       1

有一种简单的方法吗?

2 个答案:

答案 0 :(得分:4)

这里有讨论:

Python Pandas - How to flatten a hierarchical index in columns

并且共识似乎是:

x.columns = ['_'.join(col) for col in x.columns.values]
print(x)
          sum_a  sum_b  max_a  max_b
date                                
1/1/2016      2      6      1      4
1/2/2016      1      1      1      1

如果有一个内置方法,那会很好,但似乎没有。

答案 1 :(得分:1)

使用zip非常类似于上面的解决方案:

element:active:focus {
    outline: 0;
}