2017-09-15 161 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

謝謝!這正是我想要的! –