Skip to main content
`Ctrl`+`K`

# pandas.api.typing.DataFrameGroupBy.nth

property DataFrameGroupBy.nth

  Take the nth row from each group if n is an int, otherwise a subset of rows.

  Can be either a call or an index. dropna is not available with index notation. Index notation accepts a comma separated list of integers and slices.

  If dropna, will take the nth non-null row, dropna is either ‘all’ or ‘any’; this is equivalent to calling dropna(how=dropna) before the groupby.

  Returns:
    Series or DataFrame

      N-th value within each group.

  See also

  `Series.nth`

    Apply function nth to a Series.

  `DataFrame.nth`

    Apply function nth to each row or column of a DataFrame.

  Examples

      >>> df = pd.DataFrame(
      ...     {"A": [1, 1, 2, 1, 2], "B": [np.nan, 2, 3, 4, 5]}, columns=["A", "B"]
      ... )
      >>> g = df.groupby("A")
      >>> g.nth(0)
         A   B
      0  1 NaN
      2  2 3.0
      >>> g.nth(1)
         A   B
      1  1 2.0
      4  2 5.0
      >>> g.nth(-1)
         A   B
      3  1 4.0
      4  2 5.0
      >>> g.nth([0, 1])
         A   B
      0  1 NaN
      1  1 2.0
      2  2 3.0
      4  2 5.0
      >>> g.nth(slice(None, -1))
         A   B
      0  1 NaN
      1  1 2.0
      2  2 3.0

  Index notation may also be used

      >>> g.nth[0, 1]
         A   B
      0  1 NaN
      1  1 2.0
      2  2 3.0
      4  2 5.0
      >>> g.nth[:-1]
         A   B
      0  1 NaN
      1  1 2.0
      2  2 3.0

  Specifying dropna allows ignoring `NaN` values

      >>> g.nth(0, dropna="any")
         A   B
      1  1 2.0
      2  2 3.0

  When the specified `n` is larger than any of the groups, an empty DataFrame is returned

      >>> g.nth(3, dropna="any")
      Empty DataFrame
      Columns: [A, B]
      Index: []