猿问

按特定最大值对 GroupBy 对象进行排序。个体群体内的价值

我正在尝试按某一年的最高值对我的 groupby 对象进行排序 - 即 2018 年的值。然而,没有成功。

代码:


aggs = {'sales':'sum')

df.groupby(by=['segment', 'year'].agg(aggs)

分组时pandas的默认结果

(按Level0的字母顺序排序,然后按Level1升序)


Segment Year Sales  

A 2016 2  

A 2017 10  

A 2018 6  

B 2016 1  

B 2017 4  

B 2018 8

预期结果:


Segment Year Sales  

B 2016 1  

B 2017 4  

B 2018 8  

A 2016 2  

A 2017 10  

A 2018 6

即A排在B之后,因为2018年B的总和是8,而A是6。


慕娘9325324
浏览 221回答 1
1回答

扬帆大鱼

创意是按Categorical类别按过滤值创建的,2018并按以下方式排序Sales:cats = df[df['Year'] == 2018].sort_values('Sales', ascending=False)['Segment']aggs = {'Sales':'sum'}df['Segment'] = pd.Categorical(df['Segment'], ordered=True, categories=cats)df1 = df.groupby(by=['Segment', 'Year']).agg(aggs)print (df1)              SalesSegment Year       B       2016      1        2017      4        2018      8A       2016      2        2017     10        2018      6
随时随地看视频慕课网APP

相关分类

Python
我要回答