自定义 daskGroupBy
Aggregation
非常方便,但我很难定义一个为column 中最常用值工作的值。
我有什么:
因此,从这里的示例中,我们可以像这样定义自定义聚合函数:
custom_sum = dd.Aggregation('custom_sum', lambda s: s.sum(), lambda s0: s0.sum())
my_aggregate = {
'A': custom_sum,
'B': custom_most_often_value, ### <<< This is the goal.
'C': ['max','min','mean'],
'D': ['max','min','mean']
}
col_name = 'Z'
ddf_agg = ddf.groupby(col_name).agg(my_aggregate).compute()
虽然这适用于(如在示例页面上),但对最常见值custom_sum
的适应可能是这样的(来自此处的示例):
custom_most_often_value = dd.Aggregation('custom_most_often_value', lambda x:x.value_counts().index[0], lambda x0:x0.value_counts().index[0])
但它产生
ValueError: Metadata inference failed in `_agg_finalize`.
You have supplied a custom function and Dask is unable to
determine the type of output that that function returns.
然后我试图在实现meta
中找到关键字来定义它,但找不到它。而且在示例中不需要它的事实让我认为错误在其他地方。dd.Aggregation
custom_sum
所以我的问题是,如何在df.groupby(..).agg(..)
. 谢谢!