索引的先前值python

时间:2019-04-10 10:31:44

标签: python for-loop indexing

我需要一个遍历position列所有行的for循环,并根据该列上的上一个项目根据某些规则填充当前位置。例如,如果位置的先前值是零,则该函数将检查价格是高于还是低于某个特定值,并采取相应的措施。

问题是,尝试在循环内将索引减少1无效。

我看到了其他类似的问题,但是答案指向在循环外部创建另一个已平移的位置列,然后使用该位置列。这些解决方案不起作用的原因是,位置列随着循环的继续而变化,并且这种变化需要加以考虑。

#position column
df['position']=0
df.position = np.where(df.price >= alo2,alo2_tsd,0)
df.position = np.where(df.price <= blo2, blo2_tsd,0)

for index in range(0,df.shape[0]):
    if df.loc[index-1,'position'] == 0:
        if df['price'][index] < alo2 and df['price'][index] >= alo1:    #set first upside hedge
            df.loc[index,'position'] = alo1_lots
        elif df['price'][index] > blo2 and df['price'][index] <= blo1:  #set first downside hedge
            df.loc[index,'position'] = blo1_lots
        else:
            continue

这给了我keyerror:-1。如果我用“ index + 1”代替“ index-1”(只是试图查看-1是否是实际问题),它将给我KeyError:(0,“位置”)。如果我完全删除-1,代码似乎可以正常运行(尽管当然不会产生我需要的输出)。

感谢您的帮助。在回答时,请记住,这不是我循环中唯一的if语句。我有多个其他人,因此我需要有效的解决方案。

0 个答案:

没有答案