Python 按多个列进行分层分组
我想按列'Number 3'和'Event'进行分组,并获得如下所示的所需结果。请注意,第一列是索引。我想将期望的结果保存到一个新的数据帧中Python 按多个列进行分层分组,python,sorting,pandas,multiple-columns,multi-index,Python,Sorting,Pandas,Multiple Columns,Multi Index,我想按列'Number 3'和'Event'进行分组,并获得如下所示的所需结果。请注意,第一列是索引。我想将期望的结果保存到一个新的数据帧中 Number1 Event Number2 Number3 0 20 clouds 30 404 1 22 lightening 32 404 2 23 playing 33 405 3 25
Number1 Event Number2 Number3
0 20 clouds 30 404
1 22 lightening 32 404
2 23 playing 33 405
3 25 clouds 35 410
4 24 sleeping 34 407
5 26 lightening 36 410
6 21 rain 31 404
7 27 rain 37 410
Derired Result:
Number3 Event Number1 Number2
404 0 clouds 20 30
1 lightening 22 32
6 rain 21 31
405 2 playing 23 33
410 3 clouds 25 35
6 lightening 26 36
7 rain 27 37
407 4 sleeping 24 34
需要:
但是如果需要旧的索引
也添加参数append=True
,然后:
按编辑问题编辑:
加:
很抱歉,在我意识到没有得到想要的结果后,我不得不编辑表格。请帮助再次检查该表并进行评论。似乎您只需要对第一级索引进行排序,请参阅编辑后的答案。
df1 = df.set_index(['Number3', 'Event'])
print (df1)
Number1 Number2
Number3 Event
404 clouds 20 30
lightening 21 31
rain 22 32
405 playing 23 33
410 sun 24 34
420 clouds 25 35
lightening 26 36
rain 27 37
df1 = df.set_index(['Number3', 'Event'], append=True).swaplevel(0,1)
print (df1)
Number1 Number2
Number3 Event
404 0 clouds 20 30
1 lightening 21 31
2 rain 22 32
405 3 playing 23 33
410 4 sun 24 34
420 5 clouds 25 35
6 lightening 26 36
7 rain 27 37
df1 = df.set_index(['Number3', 'Event'], append=True)
.swaplevel(0,1)
.sort_index(level='Number3')
print (df1)
Number1 Number2
Number3 Event
404 0 clouds 20 30
1 lightening 22 32
6 rain 21 31
405 2 playing 23 33
407 4 sleeping 24 34
410 3 clouds 25 35
5 lightening 26 36
7 rain 27 37