应用通过多处理的多参数函数来生成熊猫列

时间:2019-11-15 16:43:08

标签: python pandas multiprocessing

我最近开始在熊猫数据帧上映射一些复杂功能时使用multiprocessing。例如,如果我想基于其他某些列的值创建一个新列,我可以这样做:

import seaborn as sns
iris = sns.load_dataset('iris')

import multiprocessing as mp

#example of a "complex function" returning some array
def function_1(val_):
    return [1] * round(val_)

with mp.Pool(mp.cpu_count()) as pool:
    iris['test_1'] = pool.map(function_1, iris['petal_length'])

这比仅将applylambda function一起使用要快得多。

如果我有一个函数将一个数据帧的其他多列作为输入(甚至加上一些参数),我通常可以像这样应用它:

def function_2(val_1, val_2, param_):
    return [param_] * round(val_1 + val_2)


iris['test_2'] = iris.apply(lambda x: function_2(x['petal_length'], x['sepal_width'], 3), axis=1)

如何将multiprocessing用于function_2,而它需要输入的输入多于1?

1 个答案:

答案 0 :(得分:1)

对此可能会有更干净的答案,但我通常会执行以下操作:

application/xml

您可能必须对输入内容应用其他格式才能正确执行。