在pandas中,我使用下面的典型模式将矢量化函数应用于df并返回多个值.当所述函数从单个任务产生多个独立输出时,这实际上是必需的.看看我过于琐碎的例子:
import pandas as pd df = pd.DataFrame({'val1': [1, 2, 3, 4, 5], 'val2': [1, 2, 3, 4, 5]}) def myfunc(in1, in2): out1 = in1 + in2 out2 = in1 * in2 return (out1, out2) df['out1'], df['out2'] = zip(*df.apply(lambda x: myfunc(x['val1'], x['val2']), axis=1))
目前我编写了一个单独的函数来对pandas df进行分块并使用多处理来提高效率,但我想使用dask来完成此任务.继续这个例子,下面是我如何在使用dask时运行向量化函数来返回单个值:
import dask.dataframe as dd ddf = dd.from_pandas(df, npartitions=2) def simple_func(in1, in2): out1 = in1 + in2 return out1 df['out3'] = ddf.map_partitions(lambda x: simple_func(x['val1'], x['val2']), meta=(None, 'i8')).compute()
现在我想使用dask并返回两个值,如pandas示例中所示.我试图向meta添加一个列表并返回一个元组,但只是得到错误.在dask中这是可能的吗?