使用Lambda时聚合失败

bar*_*azs 5 python dask

我正在尝试将应用程序的各个部分从熊猫移植到dask,并且在dask DataFrame的groupby中使用lamdba函数时遇到障碍。

import dask.dataframe as dd

dask_df = dd.from_pandas(pandasDataFrame, npartitions=2)
dask_df = dask_df.groupby(
                        ['one', 'two', 'three', 'four'],
                        sort=False
                    ).agg({'AGE' : lambda x: x * x })
Run Code Online (Sandbox Code Playgroud)

此代码失败,并出现以下错误:

ValueError: unknown aggregate lambda

我的lambda函数在我的应用程序中比在这里更复杂,但是lambda的内容无关紧要,错误始终相同。文档中有一个非常相似的示例,因此这应该可以正常工作,但我不确定缺少什么。

相同的groupby在熊猫中也有效,但我需要提高其性能。

我正在使用dask 0.12.0和python 3.5。

小智 0

来自Dask 文档

\n

“Dask 支持 Pandas\xe2\x80\x99 聚合语法来对同一组运行多个归约。直接支持常见的归约,例如 max、sum、list 和mean。

\n

Dask 还支持用户定义的缩减。为了确保适当的性能,必须通过三个独立的步骤来制定减少量。块步骤独立地应用于每个分区并减少分区内的数据。聚合合并了分区内的结果。可选的最终步骤组合了从聚合步骤返回的结果,并且应返回单个最终列。为了让 Dask 识别减少,它必须作为 dask.dataframe.Aggregation 的实例传递。

\n

例如,sum 可以实现为:

\n
custom_sum = dd.Aggregation(\'custom_sum\', lambda s: s.sum(), lambda s0: s0.sum())\ndf.groupby(\'g\').agg(custom_sum)\n
Run Code Online (Sandbox Code Playgroud)\n

\n