Python 向DataFrame添加新列,其值取决于前一行

Python 向DataFrame添加新列,其值取决于前一行,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个现有的pandas DataFrame,我想添加一个新列,其中每一行的值将取决于前一行。 例如: df1 = pd.DataFrame(np.random.randint(10, size=(4, 4)), columns=['a', 'b', 'c', 'd']) df1 Out[31]: a b c d 0 9 3 3 0 1 3 9 5 1 2 1 7 5 6 3 8 0 1 7 现在我想创建列e,其中每一行I的df1['e'][I

我有一个现有的pandas DataFrame,我想添加一个新列,其中每一行的值将取决于前一行。 例如:

df1 = pd.DataFrame(np.random.randint(10, size=(4, 4)), columns=['a', 'b', 'c', 'd'])

df1
Out[31]: 
   a  b  c  d
0  9  3  3  0
1  3  9  5  1
2  1  7  5  6
3  8  0  1  7
现在我想创建列e,其中每一行I的df1['e'][I]的值是:
df1['e'][I]=df1['d'][I]-df1['d'][I-1]

期望输出:

df1:
   a  b  c  d  e
0  9  3  3  0  0
1  3  9  5  1  1
2  1  7  5  6  5
3  8  0  1  7  1
如何实现这一点?

您可以使用:

如果需要转换为
int

df['e'] = df.d.sub(df.d.shift(), fill_value=0).astype(int)
print (df)
   a  b  c  d  e
0  9  3  3  0  0
1  3  9  5  1  1
2  1  7  5  6  5
3  8  0  1  7  1

如果我的回答有帮助,不要忘记接受它。谢谢
df['e'] = df.d.sub(df.d.shift(), fill_value=0).astype(int)
print (df)
   a  b  c  d  e
0  9  3  3  0  0
1  3  9  5  1  1
2  1  7  5  6  5
3  8  0  1  7  1