0 Вопрос: цикл for для предыдущего значения индекса python

вопрос создан в Wed, Apr 10, 2019 12:00 AM

Мне нужен цикл 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

Это дает мне ключевую ошибку: -1. Если я заменил «index-1» на «index + 1» (просто пытаясь понять, является ли -1 фактической проблемой), он выдаст мне KeyError: (0, 'position'). если я удаляю -1 в целом, кажется, что код работает без проблем (хотя, конечно, не дает нужного мне результата).

Спасибо за вашу помощь. При ответе просто имейте в виду, что это не единственное утверждение if, которое я имею в цикле. У меня есть несколько других, и, следовательно, мне нужны эффективные решения.

    
0
  1. Пожалуйста, добавьте пример ввода и ожидаемый вывод. Это поможет нам понять, что ожидается.
    2019-04-10 10: 40: 01Z
0 ответов                              0                         
источник размещен Вот