假设我有一个 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对数据进行分组,并获取每个组中前两个最大值(x)的平均值,结果应该类似于此:
y
A (10+15)/2 = 12.5
B (12 + 10)/2 = 11
C 4
如果我使用
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'
? 有人知道如何解决这个问题吗?谢谢帮忙!