首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Pandas - 如何找到上一个非NaN的数值?

Pandas - 如何找到上一个非NaN的数值?

提问于 2020-01-28 13:20:29
回答 0关注 0查看 224
代码语言:python
复制
# 参数设置
param1 = 24  # 开仓周期
n = 3
# 当突破24日最高点开多仓,将止盈设定为收盘价+3*3倍标准差,止损设定为收盘价-3倍标准差
con1 = df['close'] > df['close'].shift(1).rolling(param1, axis=0).max()
df.loc[con1, 'signal_long'] = 1
df.loc[con1, 'stop_price_long'] = df['close'] - n * df['close'].rolling(param1, min_periods=1).std(ddof=0)
df.loc[con1, 'gain_price_long'] = df['close'] + 3 * n * df['close'].rolling(param1, min_periods=1).std(ddof=0)
# 做多平仓策略
con1 = df['close'] >= df['gain_price_long']
df.loc[con1, 'signal_long'] = 0
# 止损策略
con1 = df['close'] <= df['stop_price_long']
df.loc[con1, 'signal_long'] = 0
代码语言:javascript
复制
刚学pandas,请教大神,这里是有问题的,因为不满足con1,一般gain_price_long都是NaN,请问如何把上一个不为NaN的数字保存为变量,然后再去做判断呢?并且滚动起来?
con1 = df['close'] >= df['gain_price_long']
df.loc[con1, 'signal_long'] = 0

如图,我希望下面那个标红框的地方,singal_long变为0,因为close小于stop_price_long。

谢谢。

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档