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