Python 从最后一行到第一行在数据帧上交互

Python 从最后一行到第一行在数据帧上交互,python,pandas,Python,Pandas,我有一个带有统计数据的数据框,这些数据随着每一行的增加而累积。每天都会添加一个新行。现在我想迭代我的列,这样每一行(从最后一行开始)都会从上面的行中减去。新值应放入新列中。 这是我的数据帧的外观,列“diff”中的值是我想要的结果: time In diff 0 2017-06-26 7.086 1 2017-06-27 8.086 1 2 2017-06-28 10.200 2.114 这就是我想到的: for x in

我有一个带有统计数据的数据框,这些数据随着每一行的增加而累积。每天都会添加一个新行。现在我想迭代我的列,这样每一行(从最后一行开始)都会从上面的行中减去。新值应放入新列中。 这是我的数据帧的外观,列“diff”中的值是我想要的结果:

     time        In     diff
0  2017-06-26  7.086      
1  2017-06-27  8.086     1
2  2017-06-28  10.200    2.114
这就是我想到的:

for x in df['In']:
    df['diff'] = df.iloc[-1] - df.iloc[-2]
但事实并非如此。如何从最后一行开始循环,如何使iloc更加动态?有人能帮忙吗?
谢谢大家!

这可以使用
shift()
完成:


使用
pd.Series.diff

df.assign(Diff=df.In.diff())
您可以使用:


这就是你需要做的一切

 df['diff'] = df.In - df.In.shift(1)

 # In [16]: df
 # Out[16]:
 #        time      In   diff
 # 0  2017-06-26   7.086    NaN
 # 1  2017-06-27   8.086  1.000
 # 2  2017-06-28  10.200  2.114

我不明白你的帖子。我想这里缺少的是一个新专栏。但是当我尝试df['diff']=df.assign(diff=df.In.diff())时,我得到了一个ValueError:传递的项数错误,11,placement意味着1@Burrayassign使用新列创建原始dataframe的副本。用法:df=df.assign(Diff=df.In.Diff())
df['diff'] = df['In'].diff()
print (df)
         time      In   diff
0  2017-06-26   7.086    NaN
1  2017-06-27   8.086  1.000
2  2017-06-28  10.200  2.114
 df['diff'] = df.In - df.In.shift(1)

 # In [16]: df
 # Out[16]:
 #        time      In   diff
 # 0  2017-06-26   7.086    NaN
 # 1  2017-06-27   8.086  1.000
 # 2  2017-06-28  10.200  2.114