重塑 pandas 数据框 - (Pivot/Stack-unstack)

Reshaping pandas dataframe - (Pivot/Stack-unstack)

我有这样的数据框:

我想将其重塑为:

我试过: df2.pivot(index ='color', columns ='quarter') 但出现错误

KeyError: 'color' 在处理上述异常的过程中,又发生了一个异常:

同样堆栈和取消堆栈但没有得到预期的结果。请帮忙。

使用DataFrame.unstack with DataFrame.swaplevel and DataFrame.sort_index:

df2 = pd.DataFrame({
        'color':list('abcabc'),
         'B':[4,5,4,5,5,4],
         'C':[7,8,9,4,2,3],
         'D':[1,3,5,7,1,0],
         'quarter':['FY2015_16_Q1'] * 3 + ['FY2015_16_Q2'] * 3 
}).set_index(['quarter','color'])

print (df2)
                    B  C  D
quarter      color         
FY2015_16_Q1 a      4  7  1
             b      5  8  3
             c      4  9  5
FY2015_16_Q2 a      5  4  7
             b      5  2  1
             c      4  3  0

print (df2.index)
MultiIndex([('FY2015_16_Q1', 'a'),
            ('FY2015_16_Q1', 'b'),
            ('FY2015_16_Q1', 'c'),
            ('FY2015_16_Q2', 'a'),
            ('FY2015_16_Q2', 'b'),
            ('FY2015_16_Q2', 'c')],
           names=['quarter', 'color'])

df = df2.unstack(0).swaplevel(0,1, axis=1).sort_index(axis=1, level=0)

DataFrame.stackunstack:

df = df2.stack().unstack([0,2])

print (df)
quarter FY2015_16_Q1       FY2015_16_Q2      
                   B  C  D            B  C  D
color                                        
a                  4  7  1            5  4  7
b                  5  8  3            5  2  1
c                  4  9  5            4  3  0