小编Jas*_*918的帖子

如何将函数应用于dask数据帧并返回多个值?

在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))
Run Code Online (Sandbox Code Playgroud)

目前我编写了一个单独的函数来对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()
Run Code Online (Sandbox Code Playgroud)

现在我想使用dask并返回两个值,如pandas示例中所示.我试图向meta添加一个列表并返回一个元组,但只是得到错误.在dask中这是可能的吗?

python pandas dask

6
推荐指数
2
解决办法
1876
查看次数

标签 统计

dask ×1

pandas ×1

python ×1