2017-05-10 23 views
1

因此,我目前正在嘗試組合/合併或連接兩個數據幀,即列合併成一個層次列。組合/連接/合併2個數據幀,其中一個包含原始數據和其他數據幀,權重

可以說我有兩個dataframes這裏:

series1 = pd.Series(np.random.randn(10)) 
series2 = pd.Series(np.random.rand(10)) 
df = pd.DataFrame({'Normal': series1, 'Uniform': series2}) 
df_wgts = df.div(df.sum(0)) 

第二個數據幀給我的權重。現在,我想加入/組合(或不惜一切代價),他們形成一個分層列像樓下

Out[3]: 
    Normal    Uniform   
     data weights  data weights 
0 -1.407268 0.569645 0.985227 0.162974 
1 -1.551743 0.628126 0.561975 0.092961 
2 0.428825 -0.173583 0.258784 0.042807 
3 1.453088 -0.588192 0.868771 0.143711 
4 -2.037619 0.824803 0.624250 0.103262 
5 -0.119474 0.048362 0.947331 0.156706 
6 -0.661711 0.267852 0.691038 0.114310 
7 -0.371787 0.150495 0.608671 0.100685 
8 1.987500 -0.804515 0.326396 0.053992 
9 -0.190243 0.077008 0.172842 0.028591 

有一個簡單的方法來做到這一點?實際上,我必須在數據幀上分割每一列以獲得此輸出。

回答

0

您可以使用concat + swaplevel + sort_index

print (pd.concat([df, df_wgts], axis=1, keys=['data','weights']) 
     .swaplevel(0,1,axis=1) 
     .sort_index(axis=1)) 
    Normal    Uniform   
     data weights  data weights 
0 1.315780 0.300954 0.816827 0.144410 
1 0.296063 0.067717 0.068083 0.012037 
2 -0.107585 -0.024608 0.621109 0.109808 
3 1.564411 0.357822 0.608546 0.107587 
4 0.714840 0.163503 0.454494 0.080352 
5 0.778800 0.178132 0.881340 0.155815 
6 0.559171 0.127897 0.126216 0.022314 
7 1.165832 0.266657 0.881383 0.155823 
8 -1.735812 -0.397026 0.521863 0.092262 
9 -0.179464 -0.041048 0.676453 0.119593 
+0

你是救世主! – rko

相關問題