我正在尝试找到一种方法来并行化数据帧上的某些操作,尤其是那些无法向量化的操作。
我已经测试了以下来自http://www.racketracer.com/2016/07/06/pandas-in-parallel/的代码,但是它不起作用。没有错误消息-很简单,什么也没有发生。对其进行调试,似乎代码卡在了df = pd.concat(pool.map(func, df_split))
上,但是没有任何错误消息。
我在做什么错?
import timeit
import pandas as pd
import numpy as np
import seaborn as sns
import multiprocessing
from multiprocessing import Pool
def parallelize_dataframe(df, func):
df_split = np.array_split(df, num_partitions)
pool = Pool(num_cores)
df = pd.concat(pool.map(func, df_split))
pool.close()
pool.join()
return df
def multiply_columns(data):
data['length_of_word'] = data['species'].apply(lambda x: len(x))
return data
num_partitions = 2 #number of partitions to split dataframe
num_cores = 2# multiprocessing.cpu_count() #number of cores on your machine
iris = pd.DataFrame(sns.load_dataset('iris'))
iris = parallelize_dataframe(iris, multiply_columns)
答案 0 :(得分:0)
我需要添加
if __name__ == "__main__":