Pandas将列拆分为多级

时间:2017-09-15 20:51:47

标签: 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

现在我基本上通过基于_(下划线)拆分列来创建具有多级列的数据框,并基于首字母大写字母对它们进行分组。上述数据框的这种转换的一个例子是:

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

我尝试寻找解决方案,但我得到的最接近的是this answer,这并不能完全解决我的问题。那么,除了提取柱子的蛮力方式,然后拆分它们并最终将它们排列在一起之外,是否有任何有效或更快的方法在Pandas中执行此操作?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:5)

到位

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