在Python中更快地进行循环

时间:2020-02-03 16:14:10

标签: python pandas loops

我有一个应用程序,在该应用程序中,我需要为数据帧df中的分区列(KEY)的每个唯一值运行算法。 df的切片存储在df2中。内部函数(do_calc)需要按顺序运行,以便计算第i行,我需要使用前面的行。但是,为了加快速度,可以针对不同的KEY列值并行运行该算法。我曾尝试使用Numba的prange,但这导致了分割错误。

我想知道是否有更好的方法来加快下面的循环?

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

提前谢谢!

0 个答案:

没有答案
相关问题