我试过这个代码,但没有达到我想要的效果。我正在尝试让事件在数据帧上工作。如果过期日期等于索引日期,那么我希望值为0。如果预测列显示1,那么我想得到1的值。我希望它检查前一行是否已经触发了1,并在过期日期触发0之前保持为1。你知道吗
df['Forecast'] = np.select([df.ExpirationDate == df.index,
df.Predictions == 1,
df.Forecast.shift(1).eq(1)], [0, 1, 1])
我试过换班,但似乎不正常,因为它只做了一次。你知道吗
Open High ... ExpirationDate Predictions
Date ...
2017-09-18 249.610001 250.119995 ... 2017-10-20 0
2017-09-19 250.000000 250.070007 ... 2017-10-20 0
2017-09-20 250.070007 250.190002 ... 2017-10-20 0
2017-09-21 249.880005 249.979996 ... 2017-10-20 0
2017-09-22 249.050003 249.630005 ... 2017-10-20 0
预期产量
Predictions Forecast
Date
2017-09-18 0 0
2017-09-19 0 0
2017-09-20 0 0
2017-09-21 0 0
2017-09-22 0 0
2017-09-25 0 0
2017-09-26 0 0
2017-09-27 0 0
2017-09-28 0 0
2017-09-29 0 0
2017-10-02 0 0
2017-10-03 0 0
2017-10-04 0 0
2017-10-05 1 1
2017-10-06 0 1
2017-10-09 0 1
2017-10-10 0 1
2017-10-11 0 1
2017-10-12 0 1
2017-10-13 0 1
2017-10-16 0 1
2017-10-17 0 1
2017-10-18 0 1
2017-10-19 0 1
2017-10-20 0 0
所以,在预测中出现1之后,预测值保持为1。当到期时,Forecast将返回0。你知道吗
我们也可以使用^{} +^{} :
输出
我们可以使用
Series.where
来屏蔽,允许用fillna
向前填充。另一个where
只在每行的过期日期之前设置值,我们将剩余的值设置回0。你知道吗相关问题 更多 >
编程相关推荐