我有基于时间序列的数据。
time,val
2018-04-25,30
2018-04-26,10
2018-04-27,-30
2018-04-28,0
2018-04-29,60
我需要添加4列:
1. mean
2. average
3. (shifted)shifted val by 1
4. (diff)1 if val>0 else 0
首先,我将其计算为:
df['mean'] = df[val].ewm(span=3, adjust=False, ignore_na=False).mean()
df['average'] = df[val].rolling(window=3, center=False).mean()
df['shifted'] = df[val].shift(1)
df['diff'] = 0
df['diff'][df['val']>0]=1
这是一个包含数百万行的大型数据集。所以我希望每次为此添加一行时,只应对新添加的行进行计算。 我使用的列表示我对实际数据应用的操作类型。 并且计算持续时间间隔以秒为单位。所以速度和性能很重要。
有没有办法实现这个目标?