【发布时间】:2019-06-07 04:13:10
【问题描述】:
我有以下数据框:
W Y
0 1 5
1 2 NaN
2 3 NaN
3 4 NaN
4 5 NaN
5 6 NaN
6 7 NaN
...
因为表格行一直持续到索引 240。我想获得以下数据框:
W Y
0 1 5
1 2 7
2 3 10
3 4 14
4 5 19
5 6 27
6 7 37
...
请注意W 的值是任意的(只是为了使这里的计算更容易,实际上在我的实际程序中它们是np.random.normal)。
或者换句话说:
如果 Y 索引为 0,则 Y 的值为 5;
如果 Y 索引介于 1 和 4(包括)之间,则 Y_i 是 Y 中的前一个元素与 W 中的当前元素之和。
如果 Y 索引 >=5,则 Y 的值为:Y_{i-1} + Y_{i-4} - Y_{i-5} + W_i
使用iipr 回答我已经设法通过运行计算前五个值:
def calculate(add):
global value
value = value + add
return value
df.Y = np.nan
value = 5
df.loc[0, 'Y'] = value
df.loc[1:5, 'Y'] = df.loc[1:5].apply(lambda row: calculate(*row[['W']]), axis=1)
但我还没有设法计算其余的值(其中 index>=5)。
有人有什么建议吗?
【问题讨论】:
-
If Y index is >=5 then the value of Y is: Y_i + Y_{i-4} - Y_{i-5} + W_i。Y_i这里是什么?不应该是NaN吗 -
对不起,我的错,假设是 Y_{i-1},我正在编辑我的问题
-
Y_6=Y_5+Y_2-Y_1+W_6=27+10-7+7=37