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