pandas groupby last n

时间:2014-03-30 21:46:46

标签: python pandas group-by

使用pandas groupby获取最后n个实例的平均值的最佳方法是什么?

例如,我有一个这样的数据框:

frame = pd.DataFrame({'Student' : ['Bob', 'Bill', 'Bob', 'Bob', 'Bill', 'Joe', 'Joe', 'Bill', 'Bob', 'Joe'],                                      
                          'Score' : np.random.random(10)})

如何获得每位学生最后3分的平均值。

1 个答案:

答案 0 :(得分:2)

也许是这样的?

>>> df.groupby("Student")["Score"].apply(lambda x: x.iloc[-3:].mean())
Student
Bill       0.513128
Bob        0.342806
Joe        0.469662
Name: Score, dtype: float64

您可以使用.iloc[-3:]访问最后三个(或更少)元素,然后使用.mean()取平均值。

或者,您可以使用.tail(3)代替,或者分两次使用:

>>> df.groupby("Student").tail(3).groupby("Student")["Score"].mean()
Student
Bill       0.513128
Bob        0.342806
Joe        0.469662
Name: Score, dtype: float64