Метод first
Метод first применяется к объекту GroupBy
и возвращает первые значения в каждой группе для всех столбцов.
Этот метод полезен для получения первой записи из каждой группы
без необходимости дополнительной сортировки.
Синтаксис
grouped.first(numeric_only=False, min_count=-1)
Метод принимает два необязательных параметра:
-
numeric_only- логическое значение (по умолчаниюFalse), определяет, использовать ли только числовые столбцы. -
min_count- целочисленное значение (по умолчанию-1), задаёт минимальное количество значений в группе для возврата результата.
Пример
Рассмотрим базовый пример получения первых значений в группах:
import pandas as pd
df = pd.DataFrame({
'group': ['a', 'a', 'b', 'b', 'c'],
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
grouped = df.groupby('group')
res = grouped.first()
print(res)
Результат выполнения кода:
a b
group
a 1 10
b 3 30
c 5 50
Пример
Использование параметра numeric_only для работы только с числовыми столбцами:
import pandas as pd
df = pd.DataFrame({
'group': ['x', 'x', 'y', 'y'],
'a': [1, 2, 3, 4],
'b': ['str1', 'str2', 'str3', 'str4']
})
grouped = df.groupby('group')
res = grouped.first(numeric_only=True)
print(res)
Результат выполнения кода:
a
group
x 1
y 3
Пример
Использование параметра min_count для фильтрации групп с малым количеством элементов:
import pandas as pd
df = pd.DataFrame({
'group': ['a', 'a', 'b', 'c', 'c'],
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
grouped = df.groupby('group')
res = grouped.first(min_count=2)
print(res)
Результат выполнения кода:
a b
group
a 1 10.0
c 4 40.0
В результате группа 'b' исключена, так как содержит только один элемент.
Пример
Сравнение методов first и last на одних и тех же данных:
import pandas as pd
df = pd.DataFrame({
'group': ['a', 'a', 'b', 'b', 'c'],
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
grouped = df.groupby('group')
res_first = grouped.first()
res_last = grouped.last()
print('First rows:')
print(res_first)
print('\nLast rows:')
print(res_last)
Результат выполнения кода:
First rows:
a b
group
a 1 10
b 3 30
c 5 50
Last rows:
a b
group
a 2 20
b 4 40
c 5 50