РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
372 of 687 menu

Метод tail класса GroupBy

Метод tail применяется к объекту GroupBy и возвращает последние строки для каждой группы. Первым параметром можно передать количество строк, которое нужно вернуть из каждой группы. Если параметр не указан, возвращаются 5 строк из каждой группы. Метод полезен, когда нужно получить последние записи в разрезе групп, например, последние заказы каждого клиента или последние измерения для каждого датчика.

Синтаксис

groupby_object.tail([n])

Пример

Пусть у нас есть данные о продажах по разным городам. Давайте сгруппируем данные по городу и получим последние 2 строки для каждой группы:

import pandas as pd df = pd.DataFrame({ 'city': ['A', 'B', 'A', 'B', 'A', 'B'], 'sales': [100, 200, 150, 250, 300, 400] }) grouped = df.groupby('city') res = grouped.tail(2) print(res)

Результат выполнения кода:

city sales 2 A 150 3 B 250 4 A 300 5 B 400

Пример

Теперь давайте получим последнюю строку из каждой группы, передав параметр 1:

import pandas as pd df = pd.DataFrame({ 'city': ['A', 'B', 'A', 'B', 'A', 'B'], 'sales': [100, 200, 150, 250, 300, 400] }) grouped = df.groupby('city') res = grouped.tail(1) print(res)

Результат выполнения кода:

city sales 4 A 300 5 B 400

Пример

Если не передавать параметр, метод вернёт последние 5 строк из каждой группы. Давайте проверим это на данных с большим количеством строк:

import pandas as pd df = pd.DataFrame({ 'group': ['X', 'X', 'X', 'Y', 'Y', 'Y', 'Z', 'Z'], 'value': [1, 2, 3, 4, 5, 6, 7, 8] }) grouped = df.groupby('group') res = grouped.tail() print(res)

Результат выполнения кода:

group value 1 X 2 2 X 3 4 Y 5 5 Y 6 7 Z 8

Обратите внимание: так как в группе 'X' всего 3 строки, в неё попали все строки, а из группы 'Z' вернулась только последняя строка, так как в ней было только 2 строки.

Пример

Метод tail можно комбинировать с другими методами. Например, отсортируем данные внутри каждой группы по убыванию и возьмём последние записи:

import pandas as pd df = pd.DataFrame({ 'product': ['apple', 'banana', 'apple', 'banana', 'apple'], 'date': ['2024-01-01', '2024-01-02', '2024-01-03', '2024-01-04', '2024-01-05'], 'price': [10, 20, 15, 25, 12] }) df['date'] = pd.to_datetime(df['date']) grouped = df.groupby('product') sorted_grouped = grouped.apply(lambda x: x.sort_values('date', ascending=False)) res = sorted_grouped.tail(1) print(res)

Результат выполнения кода:

product date price 0 product apple 0 apple 2024-01-01 10 banana 1 banana 2024-01-02 20

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

  • метод head,
    который возвращает первые строки каждой группы
  • метод first,
    который возвращает первую строку из каждой группы
  • метод last,
    который возвращает последнюю строку из каждой группы
  • метод nth,
    который возвращает строки по указанным позициям из каждой группы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить