将MultiIndex列合并为1级

cs9*_*s95 8 python multi-index dataframe pandas

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

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
Run Code Online (Sandbox Code Playgroud)

运行以下代码行:

x = df.groupby(['date', 'type']).value.agg(['sum', 'max']).unstack()
Run Code Online (Sandbox Code Playgroud)

x 应该是这样的:

         sum    max   
type       a  b   a  b
date                  
1/1/2016   2  6   1  4
1/2/2016   1  1   1  1
Run Code Online (Sandbox Code Playgroud)

我想结合上层和下层的列来得到这个:

           sum_a  sum_b   max_a  max_b
date                  
1/1/2016   2       6        1       4
1/2/2016   1       1        1       1
Run Code Online (Sandbox Code Playgroud)

是否有捷径可寻?

gre*_*ata 7

这里有关于这个的讨论:

Python Pandas-如何展平列中的层次结构索引

共识似乎是:

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
Run Code Online (Sandbox Code Playgroud)

如果有一个内置的方法可以这样做,但是似乎没有。