Skip to main content
`Ctrl`+`K`

# pandas.api.typing.DataFrameGroupBy.idxmax

DataFrameGroupBy.idxmax(skipna=True, numeric_only=False)

  Return index of first occurrence of maximum in each group.

  Parameters:
    skipna bool, default True

      Exclude NA values.

    numeric_only bool, default False

      Include only float, int or boolean data.

  Returns:
    DataFrame

      Indexes of maxima in each column according to the group.

  Raises:
    ValueError

      When there are no valid values for a group. Then can happen if:

      > - There is an unobserved group and `observed=False`.

      > - All values for a group are NA.

      > - Some values for a group are NA and `skipna=False`.

    Changed in version 3.0.0: Previously if all values for a group are NA or some values for a group are NA and `skipna=False`, this method would return NA. Now it raises instead.

  See also

  `Series.idxmax`

    Return index of the maximum element.

  `DataFrame.idxmax`

    Indexes of maxima along the specified axis.

  Notes

  This method is the DataFrame version of `ndarray.argmax`.

  Examples

  Consider a dataset containing food consumption in Argentina.

      >>> df = pd.DataFrame(
      ...     {
      ...         "consumption": [10.51, 103.11, 55.48],
      ...         "co2_emissions": [37.2, 19.66, 1712],
      ...         "food_type": ["meat", "plant", "meat"],
      ...     },
      ...     index=["Pork", "Wheat Products", "Beef"],
      ... )

      >>> df
                      consumption  co2_emissions food_type
      Pork                  10.51         37.20       meat
      Wheat Products       103.11         19.66      plant
      Beef                  55.48       1712.00       meat

  By default, it returns the index for the maximum value in each column according to the group.

      >>> df.groupby("food_type").idxmax()
                    consumption   co2_emissions
      food_type
      meat                 Beef            Beef
      plant      Wheat Products  Wheat Products