繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM