我有一个熊猫数据框,如下所示:
A B
Date a b c a b c
20180101 1 1 1 365 365 365
20180102 2 2 2 364 364 364
... ... ... ... ... ... ...
20181231 365 365 365 1 1 1
您可以看到我有一个多级列索引。但是,我想将其转换为以下格式:
a b c
Date Catelog1
20180101 A 1 1 1
B 365 365 365
20180102 A 2 2 2
B 364 364 364
... ... ... ... ...
20181231 A 365 365 365
B 1 1 1
但是,对于我来说,这并不明显,我们如何实现这一目标,如果我在列轴上有两个以上的层次,而我只想将其保留在底部并将所有以上索引移到列上,该怎么办?行轴?
答案 0 :(得分:1)
设置
idx = pd.MultiIndex.from_product([list('AB'), list('abc')])
df = pd.DataFrame(0, columns=idx, index=list('pqrs'))
df
A B
a b c a b c
p 0 0 0 0 0 0
q 0 0 0 0 0 0
r 0 0 0 0 0 0
s 0 0 0 0 0 0
使用swaplevel
和stack
:
df.swaplevel(0, 1, axis=1).stack()
a b c
p A 0 0 0
B 0 0 0
q A 0 0 0
B 0 0 0
r A 0 0 0
B 0 0 0
s A 0 0 0
B 0 0 0
另一种替代方法是使用参数stack
的{{1}}:
level=0