use*_*196 2 python group-by pandas
使用pandas groupby获得最后n个实例的平均值的最佳方法是什么?
例如我有一个这样的数据框:
frame = pd.DataFrame({'Student' : ['Bob', 'Bill', 'Bob', 'Bob', 'Bill', 'Joe', 'Joe', 'Bill', 'Bob', 'Joe'],
'Score' : np.random.random(10)})
Run Code Online (Sandbox Code Playgroud)
我如何获得每个学生的最后 3 个分数的平均值。
也许是这样的?
>>> 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
Run Code Online (Sandbox Code Playgroud)
您可以使用 访问最后三个(或更少)元素.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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1685 次 |
| 最近记录: |