pandas数据框滚动窗口与groupby

时间:2016-11-20 06:25:48

标签: python pandas dataframe

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

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分组怎么办?例如。我可以这样做:

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

是否有一种更优雅的方式来对一组人员进行大量轮班(1,2,... n)的总结?

1 个答案:

答案 0 :(得分:5)

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

df

enter image description here