如果当前项产生错误,如何继续下一个循环项的循环?



我有一个函数,从存储在pandas数据集中的OHLC值计算RSI指标。功能如下:

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,但每当我有一个数据帧没有足够的记录来计算指标值时,我得到一个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

最新更新