[英]How to continue the loop with the next loop item if the current item produced an error?
我有一个 function,它根据存储在 pandas 数据帧中的 OHLC 值计算 RSI 指标。 function如下:
def rsi_indicator(df):
diff = df.close.diff().values
gains = diff
losses = -diff
with np.errstate(invalid='ignore'):
gains[(gains < 0) | np.isnan(gains)] = 0.0
losses[(losses <= 0) | np.isnan(losses)] = 1e-10 # we don't want divide by zero/NaN
n = 14
m = (n - 1) / n
ni = 1 / n
try:
g = gains[n] = np.nanmean(gains[:n])
l = losses[n] = np.nanmean(losses[:n])
except IndexError as e:
????
gains[:n] = losses[:n] = np.nan
for i, v in enumerate(gains[n:], n):
g = gains[i] = ni * v + m * g
for i, v in enumerate(losses[n:], n):
l = losses[i] = ni * v + m * l
rs = gains / losses
rsi = 100 - (100 / (1 + rs))
return rsi
我循环遍历几个数据帧来计算 RSI,但每当我有一个 dataframe 没有足够的记录来计算指标值时,我就会得到一个 IndexError:
IndexError: index 14 is out of bounds for axis 0 with size 13
当出现这样的错误时,如何继续使用循环列表中的下一项?
我加了点???? 我需要代码来解决这个问题,否则请随意更改代码。
在不处理错误或异常的情况下抑制错误或异常通常是一种不好的做法,但这可以很容易地完成,如下所示:
# block raising an exception
except:
pass # doing nothing on exception```
This can obviously be used in any other control statement, such as a loop:
for i in xrange(0,960):
try:
... run your code
except:
pass
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.