Pandas - 计算不包括当前行的组的滚动平均值 [英] Pandas - calculate rolling average of group excluding current row

查看:90
本文介绍了Pandas - 计算不包括当前行的组的滚动平均值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

例如:

data = {'Platoon': ['A','A','A','A','A','A','B','B','B','B','B','C','C','C','C','C'],
        'Date' : [1,2,3,4,5,6,1,2,3,4,5,1,2,3,4,5],
       'Casualties': [1,4,5,7,5,5,6,1,4,5,6,7,4,6,4,6]}
df = pd.DataFrame(data)

这用于计算滚动平均值,包括当前行:

This works to calculate the rolling average, inclusive of the current row:

df['avg'] = df.groupby(['Platoon'])['Casualties'].transform(lambda x: x.rolling(2, 1).mean())

给出:

Platoon   Date Casualties Avg  
        A   1   1         1.0
        A   2   4         2.5
        A   3   5         4.5
        A   4   7         6.0
        ......

我想得到的是:

Platoon   Date Casualties Avg  
        A   1   1         1.0
        A   2   4         1.0
        A   3   5         2.5
        A   4   7         4.5
        ......

我怀疑我可以在这里使用 shift 但我无法弄清楚!

I suspect I can use shift here but I can't figure it out!

推荐答案

You need shift with bfill

You need shift with bfill

df.groupby(['Platoon'])['Casualties'].apply(lambda x: x.rolling(2, 1).mean().shift().bfill())

这篇关于Pandas - 计算不包括当前行的组的滚动平均值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆