pandas.core.groupby.SeriesGroupBy.nth#

свойство SeriesGroupBy.nth[источник]#

Взять n-ю строку из каждой группы, если n - целое число, иначе подмножество строк.

Может быть либо вызовом, либо индексом. dropna недоступен с индексной нотацией. Индексная нотация принимает список целых чисел и срезов, разделенных запятыми.

Если dropna, будет взята n-я непустая строка, dropna — либо ‘all’, либо ‘any’; это эквивалентно вызову dropna(how=dropna) перед группировкой.

Параметры:
nint, slice или список int и slices

Одиночное n-ное значение для строки или список n-ных значений или срезов.

Изменено в версии 1.4.0: Добавлены срезы и списки, содержащие срезы. Добавлена индексная нотация.

dropna{‘any’, ‘all’, None}, по умолчанию None

Применить указанную операцию dropna перед подсчётом, какая строка является n-й строкой. Поддерживается только если n — целое число.

Возвращает:
Series или DataFrame

N-е значение в каждой группе.

Смотрите также

Series.groupby

Применить функцию groupby к Series.

DataFrame.groupby

Применить функцию groupby к каждой строке или столбцу DataFrame.

Примеры

>>> 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

Может также использоваться нотация индекса

>>> 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

Указание dropna позволяет игнорировать NaN values

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

Когда указанный n больше, чем любая из групп, возвращается пустой DataFrame

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