我有一个数据帧:
index = pd.MultiIndex.from_product([['a', 'b'], ['A', 'B'], ['One', 'Two']])
df = pd.DataFrame(np.arange(16).reshape(2, 8), columns=index)
df
如何在不知道列有多少级别的情况下堆叠MultiIndex的所有级别.
我希望结果看起来像这样:
0 a A One 0
Two 1
B One 2
Two 3
b A One 4
Two 5
B One 6
Two 7
1 a A One 8
Two 9
B One 10
Two 11
b A One 12
Two 13
B One 14
Two 15
dtype: int64
解决方法:
您可以先找到len级别,获取范围并将其传递给stack:
print (df.columns.nlevels)
3
print (list(range(df.columns.nlevels)))
[0, 1, 2]
print (df.stack(list(range(df.columns.nlevels))))
0 a A One 0
Two 1
B One 2
Two 3
b A One 4
Two 5
B One 6
Two 7
1 a A One 8
Two 9
B One 10
Two 11
b A One 12
Two 13
B One 14
Two 15
dtype: int32
标签:python,pandas,multi-index