Python 熊猫将列分为多个层次

Python 熊猫将列分为多个层次,python,python-2.7,pandas,dataframe,Python,Python 2.7,Pandas,Dataframe,我有这样一个数据帧: df = pd.DataFrame(pd.DataFrame([[1,2,3,4],[5,6,7,8],[9,10,11,12]],columns=["X_a","Y_b","X_b","Y_a"])) X_a Y_b X_b Y_a 0 1 2 3 4 1 5 6 7 8 2 9 10 11 12 现在,我基本上知道如何创建具有多级列的数据框架,方法是基于\uu(下划线)拆分列,并基于大写字

我有这样一个数据帧:

df = pd.DataFrame(pd.DataFrame([[1,2,3,4],[5,6,7,8],[9,10,11,12]],columns=["X_a","Y_b","X_b","Y_a"]))

   X_a  Y_b  X_b  Y_a
0    1    2    3    4
1    5    6    7    8
2    9   10   11   12
现在,我基本上知道如何创建具有多级列的数据框架,方法是基于
\uu
(下划线)拆分列,并基于大写字母对它们进行分组。上述数据帧上的此转换示例如下:

     X         Y
     a    b    a    b
0    1    3    4    2
1    5    7    8    6
2    9   11   12   10

我试图寻找一个解决方案,但我得到的最接近的是,这并不能完全解决我的问题。那么,除了强行提取列,然后将它们拆分,最后将它们排列在一起之外,在熊猫身上还有什么有效或更快的方法可以做到这一点吗?任何帮助都将不胜感激。

到位

df.columns = df.columns.str.split('_', expand=True)
df.sort_index(axis=1)

   X       Y    
   a   b   a   b
0  1   3   4   2
1  5   7   8   6
2  9  11  12  10

内联
不改变原作

pd.DataFrame(
    df.values, columns=df.columns.str.split('_', expand=True)).sort_index(1)

   X       Y    
   a   b   a   b
0  1   3   4   2
1  5   7   8   6
2  9  11  12  10