带有groupby的pandas数据框滚动窗口 [英] pandas dataframe rolling window with groupby

查看:52
本文介绍了带有groupby的pandas数据框滚动窗口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我可以添加一个新列c,该列是b中最后两个值的和,如下所示...

I can add a new column c that is a sum of the last two values in b as shown below...

df['c'] = df.b.rolling(window = 2).sum().shift()

df
    a   b     c
0   1   3   NaN
1   1   0   NaN
2   0   6   3.0
3   1   0   6.0
4   0   0   6.0
5   1   7   0.0
6   0   0   7.0
7   0   7   7.0
8   1   4   7.0
9   1   2   11.0

...但是,如果我想先按a分组怎么办?例如.我可以这样做:

...however, what if I want to group by a first? E.g. I can do this:

df['c'] = df.groupby(['a'])['b'].shift(1) + df.groupby(['a'])['b'].shift(2)

是否存在一种更优雅的方式来汇总一组中的大量班次(1、2,... n)?

Is there a more elegant way for summing a large number of shifts (1, 2, ...n) on a group?

推荐答案

f = lambda x: x.rolling(2).sum().shift()
df['c'] = df.groupby('a').b.apply(f)

df

这篇关于带有groupby的pandas数据框滚动窗口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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