我有一个数据框如下:
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
答案 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