У меня есть фрейм данных, содержащий более 1 миллиона строк и состоящий из исторических цен актива. Я хочу выполнить некоторые операции со столбцами этого фрейма данных, и для этого я создал функцию take_decision , которая принимает некоторые из столбцов в качестве входных данных.
df - это фрейм данных, содержащий всю информацию, которую я должен передать своей функции. Он содержит более 1 миллиона строк и 22 столбца (только 3 из них передаются в функцию).
Что я получаю из функции, так это столбец логических данных в зависимости от значения condition1 и condition2. Возвращаемый кадр данных имеет тот же 1 миллион + номер столбца.
Функция take_decision работает нормально, но когда я пытаюсь скомпилировать ее с помощью Numba, чтобы ускорить вычисления, я получаю сообщение об ошибке ниже.
Входные данные для функции - это просто столбцы данных, содержащие целые числа (в частности, числа от 0 до 100). Различные условия создаются на основе сравнения всех элементов различных столбцов.
Код будет выглядеть так:
from numba import jit
...
@jit(nopython=True)
def take_decision(session, entry_, exit_): #the inputs are columns of dataframe containing integers
condition1 = ~((session < entry_) | (entry_== exit_))
condition2 = ((entry_ <= exit_))
return condition1 & condition2
positions = pd.DataFrame()
positions['Current'] = take_decision(df['Session'], df['entry_'], df['exit_'])
Я получаю ошибку:
TypingError: non-precise type pyobject
[1] During: typing of argument at <ipython-input-821-165a0522266c> (3)
Что я делаю не так и как я могу это исправить?