gpt4 book ai didi

python - nlargest on groupby 具有多索引和多个聚合列

转载 作者:太空宇宙 更新时间:2023-11-04 05:01:07 24 4
gpt4 key购买 nike

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

Groupedby 数据如下所示:

Data currently

当我运行时:

grp_data.n_largest(10,'GrossRevenue_GBP')

似乎对我不起作用,完整的代码片段如下:

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']]

非常感谢一些帮助。

谢谢,

最佳答案

我认为您首先需要 groupby Multiindex 级别并使用 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)

关于python - nlargest on groupby 具有多索引和多个聚合列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45693185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com