Python 3.x Pandas-按groupby中的聚合列进行排序,并筛选前n列
下面提到的数据集是groupby的输出。现在,我需要根据列Total\u return筛选每个城市的前三名客户 代码片段: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',
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