Python 向DataFrame添加新列,其值取决于前一行
我有一个现有的pandas 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
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