Метод nth
Метод nth применяется к объекту GroupBy
и возвращает строки с указанными порядковыми номерами
из каждой группы. Первым параметром передаётся
индекс или список индексов строк, которые нужно
извлечь из каждой группы.
Синтаксис
groupby_obj.nth(n, dropna=None)
Пример
Давайте получим вторую строку из каждой группы:
import pandas as pd
df = pd.DataFrame({
'a': [1, 1, 2, 2, 3, 3],
'b': [10, 20, 30, 40, 50, 60]
})
grouped = df.groupby('a')
res = grouped.nth(1)
print(res)
Результат выполнения кода:
b
a
1 20
2 40
3 60
Пример
Давайте получим нулевую и вторую строки из каждой группы:
import pandas as pd
df = pd.DataFrame({
'a': ['x', 'x', 'x', 'y', 'y', 'y'],
'b': [1, 2, 3, 4, 5, 6],
'c': [10, 20, 30, 40, 50, 60]
})
grouped = df.groupby('a')
res = grouped.nth([0, 2])
print(res)
Результат выполнения кода:
b c
a
x 1 10
x 3 30
y 4 40
y 6 60
Пример
Давайте получим последнюю строку из каждой группы с помощью отрицательного индекса:
import pandas as pd
df = pd.DataFrame({
'a': ['one', 'one', 'two', 'two', 'three', 'three'],
'b': [5, 15, 25, 35, 45, 55]
})
grouped = df.groupby('a')
res = grouped.nth(-1)
print(res)
Результат выполнения кода:
b
a
one 15
two 35
three 55
Пример
Давайте обработаем случай с пропущенными значениями.
Параметр dropna позволяет выбрать,
исключать ли строки с NaN:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, 1, 2, 2, 3, 3],
'b': [10, np.nan, 30, 40, 50, np.nan]
})
grouped = df.groupby('a')
res = grouped.nth(1, dropna='any')
print(res)
Результат выполнения кода:
b
a
1 NaN
2 40
3 NaN