gpt4 book ai didi

python - 按特定最大值对 GroupBy 对象进行排序。个体群体内的值(value)

转载 作者:行者123 更新时间:2023-12-01 01:14:34 26 4
gpt4 key购买 nike

我正在尝试按特定年份的最高值(即 2018 年值)对 groupby 对象进行排序。然而,没有成功。
代码:

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。

最佳答案

Idea 是通过使用 2018 过滤值创建有序的 Categorical 类别,并按 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)
Sales
Segment Year
B 2016 1
2017 4
2018 8
A 2016 2
2017 10
2018 6

关于python - 按特定最大值对 GroupBy 对象进行排序。个体群体内的值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54480181/

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