我面临在pandas数据框中正确地转置和堆叠多级列的问题。
这是我的初始数据集:
1990 1991
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
A | B A | B A | B A | B A | B A | B A | B A | B
我想将此多级列(3级)转换为单列(基本上将其展平)。
这是我的预期输出:
Year Quarter A B
1990 Q1 a1 b1
Q2 a2 b2
.... ... ... ...
1991 ..................
下面是我尝试的我的代码,但失败了(输出与预期不符)。
df.transpose().stack(level=0).to_frame().reset_index()
这会按预期扩展Year
,Quarter
,但无法正确对齐A
和B
的其余两列。
我是否缺少任何堆叠,拆栈或枢轴旋转功能?
答案 0 :(得分:1)
您可以使用stack
进行两个级别的检查
df.stack([0,1]).reset_index()
数据输入
df=pd.DataFrame(columns=idx,index=[1]).fillna(0)
df.stack([0,1])
a b
1 1900 q1 0 0
q2 0 0
q3 0 0
q4 0 0
1991 q1 0 0
q2 0 0
q3 0 0
q4 0 0