2014-08-29 47 views
0

鑑於以下數據幀:如何將兩個現有列放在層次結構下?

import pandas as pd 
df = pd.DataFrame(randn(10, 5), columns=['a', 'b1', 'b2', 'c1', 'c2']) 

如何添加另一個層級,以將綁定列「B1」,並在「B」「B2」,並在「C1」,「C2」' C'?

我只找到了在新數據框中生成分層索引的示例。

謝謝。

回答

3

您可以通過定義一個多指標(包括原列標籤和一個新的水平)和分配這列(覆蓋現有列)做到這一點:

In [73]: upper_level = [i[0] for i in df.columns] 

In [74]: df.columns = pd.MultiIndex.from_arrays([upper_level, df.columns]) 

In [75]: df 
Out[75]: 
      a   b     c 
      a  b1  b2  c1  c2 
0 -1.656965 1.838595 -1.745855 -2.024337 0.087243 
1 0.573167 0.946658 0.691831 -1.107968 -0.911961 
2 0.279150 0.038185 0.970203 -0.129443 0.977402 
3 -1.192675 2.103922 -1.170816 1.433252 0.251258 
4 1.465639 1.925409 -0.759904 1.062088 0.555272 
5 -0.667394 -0.941874 0.192990 0.787811 -1.236446 
6 -0.016380 -0.106379 -1.328149 -0.576587 0.269650 
7 -1.040711 -0.156927 0.056562 -1.073571 0.899144 
8 -0.962474 0.505168 0.348957 1.640170 -0.376509 
9 -0.431045 0.228514 -1.447591 0.058036 0.126517 

在這種情況下,我做了新的索引級別通過採用原始列的第一個字符,但是當然如果需要的話,您可以在這裏應用另一個函數。

+0

輝煌,謝謝! (希望這被添加到熊貓文檔) – user2808117 2014-08-29 09:53:49