【问题标题】:nlargest on groupby with multiindex and multiple agg column具有多索引和多个 agg 列的 groupby 上的 nlargest
【发布时间】:2017-08-15 12:49:21
【问题描述】:

努力将 .nlargest() 应用于我的 groupedby 数据,以便仅按每个索引的总收入显示前 10 个 [0]

Groupedby 数据如下所示:

当我跑步时:

grp_data.n_largest(10,'GrossRevenue_GBP')

似乎对我不起作用,完整的代码 sn-p 如下:

tmean = lambda x :stats.trim_mean(x, 0.1)

data = data.loc[(data['YYYY'] == 2016)&(data['New_category_ID'] != 0)]

grp_data = data.groupby(['New_category','CDI_CUS_NM'])['GrossRevenue_GBP',
'OrderCount',
'% Rev', 
'MOVC_GBP', 
'Average order size']
.aggregate({'GrossRevenue_GBP':np.sum, 'OrderCount':np.sum,'% Rev': np.sum,'MOVC_GBP': tmean ,'Average order size': tmean })
.nlargest(10,'GrossRevenue_GBP')


grp_data['Country'] = 'EU'


key1 = grp_data.index.labels[0]
key2 = grp_data['GrossRevenue_GBP'].rank(ascending=False)
sorter = np.lexsort((key2, key1))

grp_data = grp_data.take(sorter)


grp_data = grp_data[['% Rev','GrossRevenue_GBP', 'MOVC_GBP','Average order size','OrderCount','Country']]

非常感谢您的帮助。

谢谢,

【问题讨论】:

    标签: python pandas dataframe pandas-groupby


    【解决方案1】:

    我认为您需要groupby 第一个多索引级别并使用nlargest 应用函数:

    grp_data = data.groupby(['New_category','CDI_CUS_NM']) 
                   .aggregate({'GrossRevenue_GBP':np.sum, 
                               'OrderCount':np.sum,
                               '% Rev': np.sum,
                               'MOVC_GBP': tmean ,
                               'Average order size': tmean })
    
    df = grp_data.groupby('New_category')
                 .apply(lambda x: x.nlargest(1,'GrossRevenue_GBP'))
                 .reset_index(level=0, drop=True)
    

    【讨论】:

      猜你喜欢
      • 2021-07-13
      • 2016-12-08
      • 1970-01-01
      • 2021-05-14
      • 2018-07-23
      • 2019-02-12
      • 2019-03-27
      • 2020-12-07
      • 2020-12-17
      相关资源
      最近更新 更多