我正在尝试将应用程序的各个部分从熊猫移植到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。
\nDask 还支持用户定义的缩减。为了确保适当的性能,必须通过三个独立的步骤来制定减少量。块步骤独立地应用于每个分区并减少分区内的数据。聚合合并了分区内的结果。可选的最终步骤组合了从聚合步骤返回的结果,并且应返回单个最终列。为了让 Dask 识别减少,它必须作为 dask.dataframe.Aggregation 的实例传递。
\n例如,sum 可以实现为:
\ncustom_sum = dd.Aggregation(\'custom_sum\', lambda s: s.sum(), lambda s0: s0.sum())\ndf.groupby(\'g\').agg(custom_sum)\nRun Code Online (Sandbox Code Playgroud)\n”
\n| 归档时间: |
|
| 查看次数: |
641 次 |
| 最近记录: |