2017-07-08 81 views
1

我有如下一個數據幀:如何設置多級索引的數據幀與現有列

 A  B  C  D 
0 hola 32 43 54 
1 hey 87 67 45 
2 hi  10 54 89 
3 hola 19 34 12 
4 hi  11 59 09 

我需要設置使用A和B的多值索引,其通過甲 我需要以下分組數據幀

A  B  C  D 
hola 32 43 54 
     19 34 12 
hey 87 67 45 
hi  10 54 89 
     11 59 09 

我已經使用df.set_index([ 'A', 'B']) 嘗試和我得到

A  B  C  D 
hola 32 43 54 
hola 19 34 12 
hey 87 67 45 
hi  10 54 89 
hi  11 59 09 

回答

2

您需要先排序。

df.sort_values(['A','B']).set_index(['A','B']) 
Out[60]: 
      C D 
A B   
hey 87 67 45 
hi 10 54 89 
    11 59 9 
hola 19 34 12 
    32 43 54 
+0

that worked!謝謝,請問能告訴我這是怎麼工作的,爲什麼它在我的情況下不起作用 –

+0

您需要先對列進行排序,以便大熊貓可以看到它可以將它們分組爲多個索引 – Allen

0

排序第一不necessary-您正在設置MultiIndex,但它不是lexsorted:

df.set_index(['A','B']).index.is_lexsorted() 
False 

作爲另一種方法,設定指數你已經擁有並在以後對其進行排序:

df.set_index(['A','B']).sort_index() 
      C D 
A B   
hey 87 67 45 
hi 10 54 89 
    11 59 9 
hola 19 34 12 
    32 43 54