【发布时间】:2019-11-14 11:35:32
【问题描述】:
我有这样的数据框:
我尝试过:
df2.pivot(index ='color', columns ='quarter') 但出现错误
KeyError: 'color'
在处理上述异常的过程中,又出现了一个异常:
还可以堆叠和取消堆叠,但没有得到想要的结果。请帮忙。
【问题讨论】:
-
print (df2.info())是什么?
我有这样的数据框:
我尝试过:
df2.pivot(index ='color', columns ='quarter') 但出现错误
KeyError: 'color'
在处理上述异常的过程中,又出现了一个异常:
还可以堆叠和取消堆叠,但没有得到想要的结果。请帮忙。
【问题讨论】:
print (df2.info()) 是什么?
将DataFrame.unstack 与DataFrame.swaplevel 和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
【讨论】: