pandas数据帧在范围(1,n)中x的shift(x)之和

时间:2016-11-20 04:37:02

标签: python pandas dataframe

我有一个这样的数据框,并希望添加一个新列,相当于应用shift n次。例如,设n = 2:

df = pd.DataFrame(numpy.random.randint(0, 10, (10, 2)), columns=['a','b'])

   a  b
0  0  3
1  7  0
2  6  6
3  6  0
4  5  0
5  0  7
6  8  0
7  8  7
8  4  4
9  2  2

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

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

以这种方式,列c获取列n中之前b值的总和。

除了循环之外,是否有更好的方法可以为大型n完成此操作?

1 个答案:

答案 0 :(得分:2)

您可以将long方法与rolling() window一起使用:

2