我有一个应用程序,在该应用程序中,我需要为数据帧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
提前谢谢!