# pandas.core.groupby.GroupBy.nth

`GroupBy.``nth`(n, dropna=None)

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

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

  Parameters:

  n : int or list of ints

  > a single nth value for the row or a list of nth values

  dropna : None or str, optional

  > apply the specified dropna operation before counting which row is the nth row. Needs to be None, ‘any’ or ‘all’

  See also

  `pandas.Series.groupby`, `pandas.DataFrame.groupby`, `pandas.Panel.groupby`

  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)
           B
      A
      1  NaN
      2  3.0
      >>> g.nth(1)
           B
      A
      1  2.0
      2  5.0
      >>> g.nth(-1)
           B
      A
      1  4.0
      2  5.0
      >>> g.nth([0, 1])
           B
      A
      1  NaN
      1  2.0
      2  3.0
      2  5.0

  Specifying `dropna` allows count ignoring NaN

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

  NaNs denote group exhausted when using dropna

      >>> g.nth(3, dropna='any')
          B
      A
      1 NaN
      2 NaN

  Specifying `as_index=False` in `groupby` keeps the original index.

      >>> df.groupby('A', as_index=False).nth(1)
         A    B
      1  1  2.0
      4  2  5.0

Scroll To Top