首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pandas按多列进行分层分组

pandas按多列进行分层分组
EN

Stack Overflow用户
提问于 2017-01-10 18:59:15
回答 1查看 846关注 0票数 0

我想按“编号3”和“事件”列进行分组,并获得所需的结果,如下所示。请注意,第一列是索引。我想将所需的结果保存到新的数据帧中。

代码语言:javascript
复制
     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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-10 19:00:10

需要set_index

代码语言:javascript
复制
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

但如果也需要旧的index,则添加参数append=True,然后添加swaplevel

代码语言:javascript
复制
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

由编辑的问题编辑:

添加sort_index

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41567187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档