Python 3.x Pandas-按groupby中的聚合列进行排序,并筛选前n列

Python 3.x Pandas-按groupby中的聚合列进行排序,并筛选前n列,python-3.x,pandas,pandas-groupby,Python 3.x,Pandas,Pandas Groupby,下面提到的数据集是groupby的输出。现在,我需要根据列Total\u return筛选每个城市的前三名客户 代码片段: df_agg = top_cust_data.loc[(top_cust_data['Product'] == in_prod) & (top_cust_data['Repay_Year'] == in_year)].groupby(['City',

下面提到的数据集是groupby的输出。现在,我需要根据列Total\u return筛选每个城市的前三名客户

代码片段:

df_agg = top_cust_data.loc[(top_cust_data['Product'] == in_prod) 
              & (top_cust_data['Repay_Year'] == in_year)].groupby(['City',
                                                               'Customer']).agg(Total_Repay = ('Repay_Amt','sum'))
df_agg['Total_Repay'] = df_agg['Total_Repay'].astype(int)
df_agg
数据集

                 Total_Repay
City    Customer    
BANGALORE   A19 20443285
            A37 64589630
            A5  37223052
            A52 7233551
BOMBAY      A33 5174636
            A36 58074481
            A4  4006181
            A51 16802670
            A71 250440
CALCUTTA    A20 26162224
            A34 3952831
            A40 113358492
            A49 70989328
            A98 486616
            A99 259682
CHENNAI     A38 78389312
            A47 50881752
            A56 6948591
COCHIN      A21 93067291
            A3  9650990
            A35 5261360
            A41 63372356
            A50 23388118
            A54 691238
DELHI       A53 29025587
PATNA       A55 8000348
TRIVANDRUM  A39 37606828
            A48 55244011
            A97 269952

如何进行,请建议?如果您有任何建议,我们将不胜感激。

在pandas的最新版本中,
多索引的各个级别可能会按列名进行排序,因此请先使用,然后按第一级进行分组:


在pandas的最新版本中,可以按列名将
多索引
的级别排序在一起,因此首先使用,然后按第一个级别分组:


请将原始数据粘贴到groupby之前。@PankajJoshi Shared.jezrael已解决:)请将原始数据粘贴到groupby之前。@PankajJoshi Shared.jezrael已解决:)
df = df.sort_values(['City','Total_Repay'], ascending=[True, False]).groupby(level=0).head(3)
print (df)
                     Total_Repay
City       Customer             
BANGALORE  A37          64589630
           A5           37223052
           A19          20443285
BOMBAY     A36          58074481
           A51          16802670
           A33           5174636
CALCUTTA   A40         113358492
           A49          70989328
           A20          26162224
CHENNAI    A38          78389312
           A47          50881752
           A56           6948591
COCHIN     A21          93067291
           A41          63372356
           A50          23388118
DELHI      A53          29025587
PATNA      A55           8000348
TRIVANDRUM A48          55244011
           A39          37606828
           A97            269952