是否可以在 Dask map_partitions 中返回大于行的数据框?

问题描述 投票:0回答:0

我正在尝试从 dask

map_partitions
函数返回一个数据框。我提供的示例代码在函数中返回一个 2 行数据框。但是最终结果中只显示了 1 行。在这种情况下,这只是列名行。我删除了之前测试示例中的列名,但即使这样也只显示了 1 行。

如何让这个 map_partitions 函数将多行(或多行数据框)返回到一个新的 dask 数据框?延迟 dask 的解决方案甚至可能更好。

目前的成绩

Dask
0               0          1          2          3 ...
1               0          1          2          3 ...
2               0          1          2          3 ...
3               0          1          2          3 ...
4               0          1          2          3 ...

想要的结果:

Dask
           0          1          2          3          4
0  11.760715  14.591147   3.058529  19.868252  22.714292
1  10.601743  21.634348  17.443206  13.619830  13.574586
2  16.346402   2.80519    8.610979  11.656930  23.822052
3   3.100282  17.24039   10.871604  13.625602  22.695311
4  17.240093  23.069574   0.832129  22.055441   3.771150
5  22.676472  23.644936  10.721542  10.563838  17.297389
6  12.54929    0.988218  16.113930  19.572034   7.090997
7  11.76189   10.733782   3.819583   6.998412  14.439809
8  19.371690   5.172882  19.620361   3.148623  23.348465
9   5.924958  14.746566   9.069269   0.560508  15.120616

示例代码

import pandas as pd
import dask.dataframe
import numpy as np

def myfunc():
    data1 = np.random.uniform(low=0, high=25, size=(5,))
    data2 = np.random.uniform(low=0, high=25, size=(5,))

    # Just a example dataframe to show
    df = pd.DataFrame([data1, data2])
    
    return df

df = pd.DataFrame({
    'val1': [1, 2, 3, 4, 5],
    'val2': [1, 2, 3, 4, 5]
})

ddf = dask.dataframe.from_pandas(df, npartitions=2)

output = ddf.map_partitions(lambda part: part.apply(lambda x: myfunc(), axis=1), meta=object).compute()

print('\nDask\n',output)

python pandas numpy dask dask-delayed
© www.soinside.com 2019 - 2024. All rights reserved.