Я обрабатываю набор данных с помощью Dask (учитывая, что он не помещается в памяти), и я хочу сгруппировать экземпляры с помощью другой функции агрегирования в зависимости от столбца и его типа.
Dask имеет набор функций агрегирования по умолчанию для числовых типов данных, но не для строк / объектов. Есть ли способ реализовать пользовательскую функцию агрегирования для строк, несколько похожую на пример ниже?
atts_to_group = {'A', 'B'}
agg_fn = {
'C': 'mean' #int
'D': 'concatenate_fn1' #string - No default fn for strings - Doesn't work
'E': 'concatenate_fn2' #string
}
ddf = ddf.groupby(atts_to_group).agg(agg_fn).compute().reset_index()
На данный момент я могу прочитать весь набор данных в памяти после удаления ненужных столбцов / строк, но я бы предпочел продолжить обработку в Dask, учитывая, что он быстрее выполняет требуемые операции.
Edit:
Попытка добавления пользовательской функции прямо в словарь:
def custom_concat(df):
...
return df_concatd
agg_fn = {
'C': 'mean' #int
'D': custom_concat(df)
}
-------------------------------------------------------
ValueError: unknown aggregate Dask DataFrame Structure: