Создание петель быстрее в Python - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть приложение, в котором мне нужно запустить алгоритм для каждого уникального значения столбца разделения (KEY) в df. Срез df хранится в df2. А внутренняя функция (do_cal c) должна выполняться последовательно, так как для вычисления строки i мне нужно использовать предыдущие строки. Однако, чтобы ускорить процесс, алгоритм может быть запущен параллельно для разных значений столбца KEY. Я пытался использовать prange от numba, но это приводило к ошибкам сегментации.

Мне было интересно, есть ли лучший способ ускорить циклы ниже?

import pandas as pd


def do_bcf(x,df):
    lam_e = x[0] #smoothing weight for forecast error 
    lam_a = x[1] #smoothing weight for demand level
    lam_s = x[2] #smoothing weight for weekly seasonality
    clip_factor = x[3]
    key_col = 'KEY'
    list_key_cols = df[key_col].unique()
    df_calibrate = pd.DataFrame()
    for j in list_key_cols:
        df2 = df[df[key_col]==j].reset_index()
        for i in range(init_period,len(df2)):
            df2 = do_calc(df2, i,  lam_e, lam_a, lam_s, clip_factor)
        df_calibrate = pd.concat([df_calibrate,df2])
    return df_calibrate

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...