2017-09-15 112 views
1

我有这样一个数据帧:熊猫分离列到多

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中有没有更有效率或更快捷的方法,除了提取列的蛮力方式,然后分裂它们并最终将它们排列在一起?任何帮助,将不胜感激。

回答

4

代替

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 
+1

谢谢!这正是我想要的! –