pandas.core.groupby.SeriesGroupBy.idxmax#

SeriesGroupBy.idxmax(skipna=True)[source]#

Return the row label of the maximum value.

If multiple values equal the maximum, the first row label with that value is returned.

Parameters:
skipnabool, default True

Exclude NA values.

Returns:
Series

Indexes of maxima in each 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

numpy.argmax

Return indices of the maximum values along the given axis.

DataFrame.idxmax

Return index of first occurrence of maximum over requested axis.

Series.idxmin

Return index label of the first occurrence of minimum of values.

Examples

>>> ser = pd.Series(
...     [1, 2, 3, 4],
...     index=pd.DatetimeIndex(
...         ["2023-01-01", "2023-01-15", "2023-02-01", "2023-02-15"]
...     ),
... )
>>> ser
2023-01-01    1
2023-01-15    2
2023-02-01    3
2023-02-15    4
dtype: int64
>>> ser.groupby(["a", "a", "b", "b"]).idxmax()
a   2023-01-15
b   2023-02-15
dtype: datetime64[s]