gpt4 book ai didi

python - 如何使用 Pandas Groupby 和 nlargest

转载 作者:太空宇宙 更新时间:2023-11-03 19:48:41 24 4
gpt4 key购买 nike

我有一个 Dataframe df,我尝试在其中使用 groupbynlargest ,但无法获得我想要的输出:

           Date Symbol  Count
0 2013 Q2 AAAA 8
1 2013 Q2 BBBB 3
2 2013 Q2 CCCC 8
3 2013 Q2 DDDD 4
4 2013 Q2 EEEE 5
5 2013 Q3 AAAA 22
6 2013 Q3 BBBB 11
7 2013 Q3 CCCC 3
8 2013 Q3 DDDD 15
9 2013 Q3 EEEE 2
10 2013 Q3 FFFF 10

我想使用groupby日期进行选择,然后按count获取前2个符号该日期,以便输出如下所示:

           Date Symbol  Count
0 2013 Q2 AAAA 8
2 2013 Q2 CCCC 8
5 2013 Q3 AAAA 22
8 2013 Q3 DDDD 15

但是当我尝试 df = df.groupby(['Date'])['Count'].nlargest(2) 时,输出看起来像

2013 Q2  0   8
2 8
2013 Q3 5 22
8 15

最佳答案

方法一:

我们可以按Countsort_values,然后使用Groupby.head获取每组的前2行:

dfn = df.sort_values('Count', ascending=False).groupby('Date').head(2).sort_index()

Date Symbol Count
0 2013 Q2 AAAA 8
2 2013 Q2 CCCC 8
5 2013 Q3 AAAA 22
8 2013 Q3 DDDD 15
<小时/>

方法2:

applyisin结合使用

dfn = df[df.groupby('Date')['Count'].apply(lambda x: x.isin(x.nlargest(2)))]

Date Symbol Count
0 2013 Q2 AAAA 8
2 2013 Q2 CCCC 8
5 2013 Q3 AAAA 22
8 2013 Q3 DDDD 15

注意:如果前 2 个值包含多行,则此方法将返回多行。

关于python - 如何使用 Pandas Groupby 和 nlargest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59974201/

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