重塑 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.stack
与 unstack
:
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
我有这样的数据框:
我试过:
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.stack
与 unstack
:
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