假设我在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'
?
有人知道怎么解决这个问题吗?谢谢你的帮助!在
注意,这是按'y'分组两次(
^{pr2}$mean(level=0)
是另一个groupby,但它是在索引上完成的,因此速度更快)。groupby.apply基于组的数量可能更有效,因为在这种特殊情况下只需要分组一次。在相关问题 更多 >
编程相关推荐