Ошибка при создании функции, которая ссылается на значения в другой строке при использовании сдвига - PullRequest
1 голос
/ 09 июля 2020

Я пытаюсь создать функцию, которая принимает ссылки на значения в отдельном столбце, а также на значение в строке выше. Обычно я использую сдвиг для ссылки на значения в строке выше.

Однако функция сдвига не работает, когда я помещаю ее в функцию.

Я получаю сообщение об ошибке "' numpy .float64 'объект не имеет атрибута' shift ', когда я запускаю код ниже.


def don(df):
   if  df['C'] > df['55 day high'].shift(1):
        return 1
        
    else:
        return 0

df['regime']=df,apply(don,axis=1)

1 Ответ

0 голосов
/ 09 июля 2020

Ваш код завершился ошибкой, потому что примененная функция ( don ) получает только текущую строку в качестве параметра. Следовательно, у него нет доступа к предыдущей строке (ни к следующей).

Кстати: то, как вы назвали параметр ( df ), предполагает, что функции присваивается весь DataFrame, что не так. В таких случаях скорее назовите этот параметр как row .

А теперь, как выполнить вашу задачу: Более простой (и быстрый) способ выполнить вашу задачу:

df['regime'] = (df['C'] > df['55 day high'].shift(1)).astype(int)
...