【问题标题】:Get first index from multiindex grouping by level按级别从多索引分组中获取第一个索引
【发布时间】:2016-05-07 05:22:56
【问题描述】:

我有一个多索引熊猫数据框:

                              SHOPPING_COUNT  
CLIENT          YEAR MONTH               
1000063         2013 12             9  
                2014 1              9  
                     2              7  
                     3              9  
                2015 4              6  
                     5              5  
                     6              9  
1001327         2014 5              1  
                     6              1  
                2015 2              7  
                     3              1  
                     4              3 
1001399         2013 8              1 

我想知道每个客户端的第一个索引,按级别 0 排序。 我的意思是,我想得到:

1000063         2013 12
1001327         2014 5
1001399         2013 8              

【问题讨论】:

    标签: python pandas indexing


    【解决方案1】:

    这不是很程序化,但是如果你看一下结果:

    client = 1000063
    df.loc[client].index
    

    然后以下将起作用:

    year  = df.loc[client].index.levels[0][df.loc[client].index.labels[0][0]]
    month = df.loc[client].index.levels[1][df.loc[client].index.labels[1][0]]
    

    【讨论】:

      【解决方案2】:

      df 成为您的数据框,您可以执行以下操作:

      df = df.groupby(level=0).apply(lambda x: x.iloc[0:1])
      df.index = df.index.droplevel(0)
      

      实际上这应该更容易做到,但我认为这种方法有效。

      【讨论】:

      • 可能,它不是最简单的,也不是最快的,但是很有效。非常感谢!!
      猜你喜欢
      • 2018-02-03
      • 2021-02-02
      • 2019-10-03
      • 2019-01-02
      • 2016-09-08
      • 2018-06-06
      • 1970-01-01
      • 2014-11-09
      • 2016-07-21
      相关资源
      最近更新 更多