Skip to main content
`Ctrl`+`K`

# pandas.DataFrame.agg

DataFrame.agg(func=None, axis=0, *args, **kwargs)

  Aggregate using one or more operations over the specified axis.

  This method allows combining multiple aggregation functions at once, such as `sum`, `mean`, and `min`, and can apply them either per-column or per-row. It accepts functions as strings, callables, lists, or dictionaries mapping column labels to the desired aggregation(s).

  Parameters:
    func function, str, list or dict

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

      Accepted combinations are:

      - function

      - string function name

      - list of functions and/or function names, e.g. `[np.sum, 'mean']`

      - dict of axis labels -> functions, function names or list of such.

    axis{0 or ‘index’, 1 or ‘columns’}, default 0

      If 0 or ‘index’: apply function to each column. If 1 or ‘columns’: apply function to each row.

    *args

      Positional arguments to pass to func.

    **kwargs

      Keyword arguments to pass to func.

  Returns:
    scalar, Series or DataFrame

      The return can be:

      - scalar : when Series.agg is called with single function

      - Series : when DataFrame.agg is called with a single function

      - DataFrame : when DataFrame.agg is called with several functions

  See also

  `DataFrame.apply`

    Perform any type of operations.

  `DataFrame.transform`

    Perform transformation type operations.

  `DataFrame.groupby`

    Perform operations over groups.

  `DataFrame.resample`

    Perform operations over resampled bins.

  `DataFrame.rolling`

    Perform operations over rolling window.

  `DataFrame.expanding`

    Perform operations over expanding window.

  `core.window.ewm.ExponentialMovingWindow`

    Perform operation over exponential weighted window.

  Notes

  The aggregation operations are always performed over an axis, either the index (default) or the column axis. This behavior is different from numpy aggregation functions (mean, median, prod, sum, std, var), where the default is to compute the aggregation of the flattened array, e.g., `numpy.mean(arr_2d)` as opposed to `numpy.mean(arr_2d, axis=0)`.

  agg is an alias for aggregate. Use the alias.

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

  A passed user-defined-function will be passed a Series for evaluation.

  If `func` defines an index relabeling, `axis` must be `0` or `index`.

  Examples

      >>> df = pd.DataFrame(
      ...     [[1, 2, 3], [4, 5, 6], [7, 8, 9], [np.nan, np.nan, np.nan]],
      ...     columns=["A", "B", "C"],
      ... )

  Aggregate these functions over the rows.

      >>> df.agg(["sum", "min"])
              A     B     C
      sum  12.0  15.0  18.0
      min   1.0   2.0   3.0

  Different aggregations per column.

      >>> df.agg({"A": ["sum", "min"], "B": ["min", "max"]})
              A    B
      sum  12.0  NaN
      min   1.0  2.0
      max   NaN  8.0

  Aggregate different functions over the columns and rename the index of the resulting DataFrame.

      >>> df.agg(x=("A", "max"), y=("B", "min"), z=("C", "mean"))
           A    B    C
      x  7.0  NaN  NaN
      y  NaN  2.0  NaN
      z  NaN  NaN  6.0

  Aggregate over the columns.

      >>> df.agg("mean", axis="columns")
      0    2.0
      1    5.0
      2    8.0
      3    NaN
      dtype: float64