使用多进程处理 DataFrame

张贤 2020年04月13日 109次浏览

基本思路是,将DataFrame拆成若干组分,最后通过pandas.concat合并起结果

def parallelize_dataframe(df, func, n_jobs=3, split_num=10):
    ## 拆分数据表
    df_split = np.array_split(df, split_num)
    pool = Pool(n_jobs)
    df_list = []
    
    ## map操作
    for df_element in tqdm_notebook(pool.imap(func, df_split), total=10000):
        df_list.append(df_element)
       
    ## reduce操作
    df = pd.concat(df_list)
    
    ## 关闭进程
    pool.close()
    pool.join()
    return df

还可以使用tqdm在处理数据时显示进度条