#python-3.x #pandas #pandas-groupby #dask #dask-dataframe
#python-3.x #pandas #pandas-groupby #dask #dask-фрейм данных
Вопрос:
Из документов можно создать .aggregate
такой dataframe.groupby
объект, как этот:
df = pd.DataFrame([[1, 2, 3],
[-4, 5, 6],
[7, 8, 9],
[np.nan, np.nan, np.nan]],
columns=['A', 'B', 'C'])
и затем aggregate
вот так:
my_agg = {'A' : ['mean', 'min'], 'B' : ['mean', 'max']}
df.agg(my_agg)
Это хорошо, но я хотел бы использовать здесь столбец abs(np.mean)
of A
. Возможно ли определить это как часть my_agg
? Каким было бы решение для dask?
Ответ №1:
Да, мы можем передать lambda
my_agg = {'A' : ['mean', 'min', lambda x : abs(x.mean())], 'B' : ['mean', 'max']}
df.agg(my_agg)
Out[194]:
A B
<lambda> 1.333333 NaN
max NaN 8.0
mean 1.333333 5.0
min -4.000000 NaN
Комментарии:
1. Да, это идеально работает для
pandas.DataFrame
. Дляdask
это даетValueError: unknown aggregate lambda
результат. Похоже, что этоlambda
не может быть использовано в этом месте.2. @gies0r попробуйте с помощью определения вашей функции ~ и agg с помощью вашей функции
3. Dask не был частью вашего первоначального вопроса. Вы могли бы отредактировать или задать заново.
4. @mdurant это было в нем в качестве тега в исходном вопросе. Я сделал короткое обновление, чтобы также запросить dask.