Spec-Zone.ru › pandas 1

pandas.core.groupby.SeriesGroupBy.transform

SeriesGroupBy.transform(func, *args, engine=None, engine_kwargs=None, **kwargs)[source]

Вызов функции, создающей серию с теми же индексами в каждой группе.

Возвращает серию с теми же индексами, что и исходный объект, заполненную преобразованными значениями.

Параметры
f:функция

Функция, применяемая к каждой группе. Требования см. в разделе «Примечания» ниже.

Также может принимать функцию Numba JIT с engine='numba'.

Если выбран 'numba' движок, функция должна быть пользовательской функцией с values и index в качестве первого и второго аргументов соответственно в сигнатуре функции. Индекс каждой группы будет передан пользовательской функции и, при необходимости, будет доступен для использования.

Изменено в версии 1.1.0.

*args

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

engine:строка, по умолчанию None
  • 'cython' : Выполняет функцию через C-расширения из cython.

  • 'numba' : Выполняет функцию через скомпилированный JIT-код из numba.

  • None : По умолчанию 'cython' или глобальная настройка compute.use_numba

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

engine_kwargs:словарь, по умолчанию None
  • Для 'cython' движка, нет допустимых engine_kwargs

  • Для 'numba' движка, движок может принимать nopython, nogil и parallel ключи словаря. Значения должны быть либо True или False. По умолчанию engine_kwargs для 'numba' движка {'nopython': True, 'nogil': False, 'parallel': False}, и будет применен к функции

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

**kwargs

Ключевые аргументы для передачи в func.

Возвращает
Серия

См. также

Series.groupby.apply

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

Series.groupby.aggregate

Агрегировать с помощью одной или нескольких операций по указанной оси.

Series.transform

Вызвать func на self, создав серию с той же формой осей, что и self.

Примечания

Каждая группе присваивается атрибут ‘name’, если вам нужно узнать, с какой группой вы работаете.

Текущая реализация накладывает три требования на f:

  • f должно возвращать значение, имеющее ту же форму, что и входная подрамка, или которое может быть преобразовано к форме входной подрамки. Например, если f возвращает скаляр, он будет преобразован к форме, соответствующей форме входной подрамки.

  • если это DataFrame, f должно поддерживать применение по столбцам в подрамке. Если f также поддерживает применение к всей подрамке, используется быстрый путь, начиная со второго блока.

  • f не должно изменять группы. Изменение не поддерживается и может привести к непредсказуемым результатам. Подробнее см. Изменение с помощью пользовательских функций (UDF).

При использовании engine='numba', внутренней обратной связи не будет. Данные группы и индекс группы будут переданы как массивы numpy в JIT-скомпилированную пользовательскую функцию, и никакие другие попытки выполнения не будут предприняты.

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

Устарело начиная с версии 1.5.0: При использовании .transform для сгруппированного DataFrame и если функция преобразования возвращает DataFrame, в настоящее время pandas не выравнивает индекс результата с индексом входных данных. Это поведение устарело, и выравнивание будет выполнено в будущей версии pandas. Для избегания выравнивания можно применить .to_numpy() к результату функции преобразования.

Примеры

>>> df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
...                           'foo', 'bar'],
...                    'B' : ['one', 'one', 'two', 'three',
...                           'two', 'two'],
...                    'C' : [1, 5, 5, 2, 5, 5],
...                    'D' : [2.0, 5., 8., 1., 2., 9.]})
>>> grouped = df.groupby('A')[['C', 'D']]
>>> grouped.transform(lambda x: (x - x.mean()) / x.std())
          C         D
0 -1.154701 -0.577350
1  0.577350  0.000000
2  0.577350  1.154701
3 -1.154701 -1.000000
4  0.577350 -0.577350
5  0.577350  1.000000

Результат преобразования, преобразуемый в новую форму

>>> grouped.transform(lambda x: x.max() - x.min())
     C    D
0  4.0  6.0
1  3.0  8.0
2  4.0  6.0
3  3.0  8.0
4  4.0  6.0
5  3.0  8.0

Изменено в версии 1.3.0: Результат типа будет отражать значение, возвращенное переданной func, например:

>>> grouped.transform(lambda x: x.astype(int).max())
   C  D
0  5  8
1  5  9
2  5  8
3  5  9
4  5  8
5  5  9

© 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/1.5.0/reference/api/pandas.core.groupby.SeriesGroupBy.transform.html

Spec-Zone.ru

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