python数据帧将列重命名为多索引列

python数据帧将列重命名为多索引列,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下dataframe import numpy as np import pandas as pd df = pd.DataFrame(np.random.random((4,4))) df Out[5]: 0 1 2 3 0 0.136122 0.948477 0.173869 0.929373 1 0.194699 0.759875 0.723993 0.497966 2 0.323100 0.

我有以下
dataframe

import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.random((4,4)))

df
Out[5]: 
          0         1         2         3
0  0.136122  0.948477  0.173869  0.929373
1  0.194699  0.759875  0.723993  0.497966
2  0.323100  0.443267  0.210721  0.681426
3  0.590853  0.710664  0.202502  0.950658
我还有一个列映射器:

mapping = {0: ('1', 'A'), 1: ('1', 'B'), 2: ('2', 'A'), 3: ('2', 'B')}
有没有办法使用
mapping
df
中的列重命名为下面的列?即直接通过映射将列更改为多索引

          1                   2          
          A         B         A         B
0  0.136122  0.948477  0.173869  0.929373
1  0.194699  0.759875  0.723993  0.497966
2  0.323100  0.443267  0.210721  0.681426
3  0.590853  0.710664  0.202502  0.950658
ps,我知道我可以简单地做到以下几点

df.columns = pd.MultiIndex.from_product([['1','2'],['A','B']])
使用,如果可以使用0.23+,则省略
。获取

df.columns = df.columns.map(mapping.get)
print (df)
          1                   2          
          A         B         A         B
0  0.696469  0.286139  0.226851  0.551315
1  0.719469  0.423106  0.980764  0.684830
2  0.480932  0.392118  0.343178  0.729050
3  0.438572  0.059678  0.398044  0.737995
另一个带有
重命名
的解决方案,但在下一步中必须转换为
多索引