Python 范围(1,n)内x的移位(x)的数据帧和

Python 范围(1,n)内x的移位(x)的数据帧和,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个这样的数据帧,我想添加一个新列,它相当于应用shiftn次。例如,设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

我有一个这样的数据帧,我想添加一个新列,它相当于应用
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
从列
b
获取先前的
n
值之和


除了循环之外,对于大型
n
,有没有更好的方法来实现这一点?

您可以使用
rolling()
方法,使用
窗口
2

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

df
    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