Spec-Zone.ru › pandas 2

pandas.core.groupby.SeriesGroupBy.apply

SeriesGroupBy.apply(func, *args, **kwargs)[source]

Применяет функцию к группам и объединяет результаты.

Функция, переданная в func, должна принимать серию в качестве первого аргумента и возвращать DataFrame, Series или скаляр. apply затем позаботится об объединении результатов обратно в один DataFrame или Series. apply поэтому является очень гибким методом группировки.

Хотя apply является очень гибким методом, его недостатком является то, что его использование может быть значительно медленнее, чем использование более специфичных методов, таких как agg или transform. Pandas предлагает широкий спектр методов, которые будут намного быстрее, чем использование apply для их конкретных целей, поэтому старайтесь использовать их перед обращением к apply.

Parameters:
func:callable

Вызываемый объект, который принимает серию в качестве первого аргумента и возвращает DataFrame, Series или скаляр. Кроме того, вызываемый объект может принимать позиционные и именованные аргументы.

include_groups:bool, по умолчанию True

Если True, попытается применить func к группам в случае, если они являются столбцами DataFrame. Если это вызывает TypeError, результат будет вычислен без учета групп. Если False, группы будут исключены при применении func.

Добавлен в версии 2.2.0.

Устарело начиная с версии 2.2.0: Установка include_groups в True устарела. В будущей версии pandas будет разрешен только False.

args, kwargs:tuple и dict

Дополнительные позиционные и именованные аргументы для передачи в func.

Returns:
Series или DataFrame

См. также

pipe

Применить функцию к всему объекту GroupBy вместо каждой группы.

aggregate

Применить агрегационную функцию к объекту GroupBy.

transform

Применить функцию столбец за столбцом к объекту GroupBy.

Series.apply

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

DataFrame.apply

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

Примечания

Изменено в версии 1.3.0: Результирующий тип данных будет отражать значение возвращаемого значения переданной функции func, см. примеры ниже.

Функции, изменяющие переданный объект, могут привести к неожиданному поведению или ошибкам и не поддерживаются. См. Изменение с помощью пользовательских функций (UDF) для получения дополнительной информации.

Примеры

>>> s = pd.Series([0, 1, 2], index='a a b'.split())
>>> g1 = s.groupby(s.index, group_keys=False)
>>> g2 = s.groupby(s.index, group_keys=True)

Из s выше видно, что у g две группы, a и b. Обратите внимание, что у g1 две группы, a и b, и они отличаются только аргументом group_keys. Вызов apply различными способами, мы можем получить разные результаты группировки:

Пример 1: Функция, переданная в apply, принимает Series в качестве аргумента и возвращает Series. apply объединяет результат для каждой группы вместе в новую Series.

Изменено в версии 1.3.0: Результирующий тип данных будет отражать значение возвращаемого значения переданной функции func.

>>> g1.apply(lambda x: x * 2 if x.name == 'a' else x / 2)
a    0.0
a    2.0
b    1.0
dtype: float64

В приведенном выше примере группы не являются частью индекса. Мы можем включить их, используя g2 где group_keys=True:

>>> g2.apply(lambda x: x * 2 if x.name == 'a' else x / 2)
a  a    0.0
   a    2.0
b  b    1.0
dtype: float64

Пример 2: Функция, переданная в apply, принимает Series в качестве аргумента и возвращает скаляр. apply объединяет результат для каждой группы вместе в Series, включая установку индекса как соответствующим образом:

>>> g1.apply(lambda x: x.max() - x.min())
a    1
b    0
dtype: int64

Аргумент group_keys здесь не имеет эффекта, потому что результат не имеет аналогичного индекса (т. е. преобразование) по сравнению с вводом.

>>> g2.apply(lambda x: x.max() - x.min())
a    1
b    0
dtype: int64

© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/2.2.2/reference/api/pandas.core.groupby.SeriesGroupBy.apply.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API