获取每组中前n个最大值

2024-04-25 08:15:52 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我在Pandas中有一个名为df的数据框:

 id    x      y
 1     10     A
 2     12     B
 3     10     B
 4     4      C
 5     9      A
 6     15     A
 7     6      B

现在我想按y列对数据进行分组,得到每组2个最大值(x)的平均值,如下所示

^{pr2}$

如果我尝试使用df.groupby('y')['x'].nlargest(2),我得到

y    id    
A    1    10
     6    15
B    2    12
     3    10
C    4    4

它属于pandas.core.series.Series类型。所以当我做df.groupby('y')[x].nlargest(2).mean()我得到所有数字的平均值,而不是3个平均值,每组一个。最后,我想画出结果,组在x轴上,均值在y轴上,所以我想我也应该去掉列'id'? 有人知道怎么解决这个问题吗?谢谢你的帮助!在


Tags: 数据coreid类型pandasdf数字mean
1条回答
网友
1楼 · 发布于 2024-04-25 08:15:52
^{1}$

注意,这是按'y'分组两次(mean(level=0)是另一个groupby,但它是在索引上完成的,因此速度更快)。groupby.apply基于组的数量可能更有效,因为在这种特殊情况下只需要分组一次。在

^{pr2}$

相关问题 更多 >