如何在具有现有列的数据框中设置多级索引

时间:2017-07-08 11:14:06

标签: python pandas

我有一个数据框如下:

     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按A分组 我需要以下数据框

 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 个答案:

答案 0 :(得分:4)

您需要先排序。

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

答案 1 :(得分:0)

首先排序不是必需的 - 您设置的是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