首先,这是我的数据:
val slopes time
0 11 0.0 1
1 11 0.0 2
2 11 0.0 3
3 06 0.0 4
4 05 0.0 5
对于每个时间步,我想计算值之间的差异。
答案 0 :(得分:1)
你可以简单地使用.diff()(感谢@JohnE)至于我最初提出的df.val - df.val.shift(1)。但是......这必须是一个骗局。
查看文档,我们发现:
def diff(arr,n,axis = 0): “”” 自我之间的差异, 类似于s-s.shift(n)
import pandas as pd
data = {'slopes': {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0},
'time': {0: 1, 1: 2, 2: 3, 3: 4, 4: 5},
'val': {0: 11, 1: 11, 2: 11, 3: 6, 4: 5}}
df = pd.DataFrame(data)
#df['diff'] = (df.val-df.val.shift(1)).fillna(0)
df['diff'] = df.val.diff().fillna(0)
print(df)
返回
slopes time val diff
0 0.0 1 11 0.0
1 0.0 2 11 0.0
2 0.0 3 11 0.0
3 0.0 4 6 -5.0
4 0.0 5 5 -1.0