pandas.core.groupby.SeriesGroupBy.aggregate — pandas 2.2.3 documentation (original) (raw)

SeriesGroupBy.aggregate(func=None, *args, engine=None, engine_kwargs=None, **kwargs)[source]#

Aggregate using one or more operations over the specified axis.

Parameters:

funcfunction, str, list, dict or None

Function to use for aggregating the data. If a function, must either work when passed a Series or when passed to Series.apply.

Accepted combinations are:

Deprecated since version 2.1.0: Passing a dictionary is deprecated and will raise in a future version of pandas. Pass a list of aggregations instead.

*args

Positional arguments to pass to func.

enginestr, default None

engine_kwargsdict, default None

**kwargs

Returns:

Series

See also

Series.groupby.apply

Apply function func group-wise and combine the results together.

Series.groupby.transform

Transforms the Series on each group based on the given function.

Series.aggregate

Aggregate using one or more operations over the specified axis.

Notes

When using engine='numba', there will be no “fall back” behavior internally. The group data and group index will be passed as numpy arrays to the JITed user defined function, and no alternative execution attempts will be tried.

Functions that mutate the passed object can produce unexpected behavior or errors and are not supported. See Mutating with User Defined Function (UDF) methodsfor more details.

Changed in version 1.3.0: The resulting dtype will reflect the return value of the passed func, see the examples below.

Examples

s = pd.Series([1, 2, 3, 4])

s 0 1 1 2 2 3 3 4 dtype: int64

s.groupby([1, 1, 2, 2]).min() 1 1 2 3 dtype: int64

s.groupby([1, 1, 2, 2]).agg('min') 1 1 2 3 dtype: int64

s.groupby([1, 1, 2, 2]).agg(['min', 'max']) min max 1 1 2 2 3 4

The output column names can be controlled by passing the desired column names and aggregations as keyword arguments.

s.groupby([1, 1, 2, 2]).agg( ... minimum='min', ... maximum='max', ... ) minimum maximum 1 1 2 2 3 4

Changed in version 1.3.0: The resulting dtype will reflect the return value of the aggregating function.

s.groupby([1, 1, 2, 2]).agg(lambda x: x.astype(float).min()) 1 1.0 2 3.0 dtype: float64