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

Метод filter

Метод filter применяется к объекту DataFrameGroupBy, полученному после группировки, и позволяет отфильтровать группы строк в соответствии с заданным условием. В результате возвращается новый DataFrame, содержащий только те строки из исходной таблицы, которые принадлежат группам, удовлетворяющим условию фильтрации. В качестве первого параметра метод принимает функцию фильтрации, которая должна вернуть булево значение (истину или ложь) для каждой группы. Метод также содержит параметры для более гибкой настройки фильтрации.

Синтаксис

groupby_object.filter(func, dropna=True)

Пример

Пусть у нас есть таблица с данными о продажах в двух городах. Отфильтруем группы, оставив только те города, где сумма продаж превышает определенное значение:

import pandas as pd df = pd.DataFrame({ 'city': ['A', 'B', 'A', 'B', 'A'], 'sales': [100, 150, 200, 50, 300] }) grouped = df.groupby('city') res = grouped.filter(lambda x: x['sales'].sum() > 250) print(res)

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

city sales 0 A 100 2 A 200 4 A 300

Пример

Отфильтруем группы, где количество строк в группе больше одного:

import pandas as pd df = pd.DataFrame({ 'city': ['A', 'B', 'A', 'B', 'C'], 'sales': [100, 150, 200, 50, 300] }) grouped = df.groupby('city') res = grouped.filter(lambda x: len(x) > 1) print(res)

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

city sales 0 A 100 1 B 150 2 A 200 3 B 50

Пример

Отфильтруем группы, исключив группы с пропущенными значениями в столбце 'sales'. Для этого воспользуемся параметром dropna со значением False, чтобы оставить группы, содержащие пропуски:

import pandas as pd import numpy as np df = pd.DataFrame({ 'city': ['A', 'B', 'A', 'B', 'A'], 'sales': [100, np.nan, 200, 50, 300] }) grouped = df.groupby('city') res = grouped.filter(lambda x: x['sales'].mean() > 100, dropna=False) print(res)

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

city sales 0 A 100.0 2 A 200.0 4 A 300.0

Пример

Используем более сложное условие фильтрации: отберем группы, где максимальное значение в столбце 'sales' больше 250 и минимальное значение больше 50:

import pandas as pd df = pd.DataFrame({ 'city': ['A', 'B', 'A', 'B', 'A'], 'sales': [100, 150, 300, 60, 250] }) grouped = df.groupby('city') res = grouped.filter( lambda x: x['sales'].max() > 250 and x['sales'].min() > 50 ) print(res)

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

city sales 0 A 100 2 A 300 4 A 250

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

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