堆叠MultiIndex的所有级别

piR*_*red 6 python multi-index pandas

我有一个数据框:

index = pd.MultiIndex.from_product([['a', 'b'], ['A', 'B'], ['One', 'Two']])
df = pd.DataFrame(np.arange(16).reshape(2, 8), columns=index)
df
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

如何在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
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 5

您可以首先找到len级别,range并将其传递给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
Run Code Online (Sandbox Code Playgroud)