gpt4 book ai didi

python - 尝试使用 groupby 查找每月 5 个最大值

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

我试图显示每个月 nc_type 的前三个值。我尝试使用 n_largest 但这并不能按日期完成。

原始数据:

     area                                     nc_type    occurred_date  
0 Filling x 12/23/2015 0:00
1 Filling f 12/22/2015 0:00
2 Filling s 9/11/2015 0:00
3 Filling f 2/17/2016 0:00
4 Filling s 5/3/2016 0:00
5 Filling g 8/29/2016 0:00
6 Filling f 9/9/2016 0:00
7 Filling a 6/1/2016 0:00

转换为:

df.groupby([df.occurred_date.dt.month, "nc_type"])["rand"].count()

转换后的数据:

occurred_date  nc_type                                   
1 x 3
y 4
z 13
w 24
f 34
..
12 d 18
g 10
w 44
a 27
g 42

最佳答案

场景1
多索引系列

occurred_date  nc_type
1.0 x 3
y 4
z 13
w 24
f 34
12.0 d 18
g 10
w 44
a 27
g 42
Name: test, dtype: int64

调用sort_values + groupby + head:

df.sort_values(ascending=False).groupby(level=0).head(2)

occurred_date nc_type
12.0 w 44
g 42
1.0 f 34
w 24
Name: test, dtype: int64

根据您的情况将 head(2) 更改为 head(5)

或者,扩展我的 comment使用nlargest,你可以这样做:

df.groupby(level=0).nlargest(2).reset_index(level=0, drop=1)

occurred_date nc_type
1.0 f 34
w 24
12.0 w 44
g 42
Name: test, dtype: int64
<小时/>

场景 2
3 列数据框

   occurred_date nc_type  value
0 1.0 x 3
1 1.0 y 4
2 1.0 z 13
3 1.0 w 24
4 1.0 f 34
5 12.0 d 18
6 12.0 g 10
7 12.0 w 44
8 12.0 a 27
9 12.0 g 42

您可以使用sort_values + groupby + head:

df.sort_values(['occurred_date', 'value'], 
ascending=[True, False]).groupby('occurred_date').head(2)

occurred_date nc_type value
4 1.0 f 34
3 1.0 w 24
7 12.0 w 44
9 12.0 g 42

根据您的场景将 head(2) 更改为 head(5)

<小时/>

场景3
多索引数据框

                       test
occurred_date nc_type
1.0 x 3
y 4
z 13
w 24
f 34
12.0 d 18
g 10
w 44
a 27
g 42

或者,使用nlargest

df.groupby(level=0).test.nlargest(2)\
.reset_index(level=0, drop=1)

occurred_date nc_type
1.0 f 34
w 24
12.0 w 44
g 42
Name: test, dtype: int64

关于python - 尝试使用 groupby 查找每月 5 个最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46880050/

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