pandas.core.groupby.SeriesGroupBy.transform
- SeriesGroupBy.transform(func, *args, engine=None, engine_kwargs=None, **kwargs)[source]
-
Вызов функции, генерирующей серию с теми же индексами, что и в каждой группе.
Возвращает серию с теми же индексами, что и исходный объект, заполненную преобразованными значениями.
- Параметры:
-
- f:функция, str
-
Функция, применяемая к каждой группе. Требования см. в разделе Примечания ниже.
Допускаемые входные данные:
Строка
Python-функция
Функция Numba JIT с
engine='numba'указанным.
Поддерживается только передача одной функции с этим движком. Если выбран движок
'numba', функция должна быть пользовательской функцией сvaluesиindexв качестве первого и второго аргументов соответственно в сигнатуре функции. Индекс каждой группы будет передан в пользовательскую функцию и, при необходимости, будет доступен для использования.Если выбрана строка, то она должна быть именем метода groupby, который вы хотите использовать.
- *args
-
Позиционные аргументы, передаваемые в func.
- engine:str, по умолчанию None
-
'cython': Выполняет функцию с помощью C-расширений из cython.'numba': Выполняет функцию с помощью JIT-скомпилированного кода из numba.None: По умолчанию'cython'или глобальная настройкаcompute.use_numba
- engine_kwargs:dict, по умолчанию None
-
Для движка
'cython'допустимыеengine_kwargsотсутствуют.Для движка
'numba'движок может приниматьnopython,nogilиparallelключи словаря. Значения должны быть либоTrue, либоFalse. По умолчаниюengine_kwargsдля движка'numba'—{'nopython': True, 'nogil': False, 'parallel': False}, и оно будет применено к функции.
- **kwargs
-
Ключевые аргументы, которые должны быть переданы в func.
- Возвращает:
-
- Серия
См. также
Series.groupby.apply-
Применение функции
funcпо группам и объединение результатов. Series.groupby.aggregate-
Агрегирование с использованием одной или нескольких операций по указанной оси.
Series.transform-
Вызов
funcна объекте, возвращающем серию с той же формой оси, что и у исходного объекта.
Примечания
Каждой группе присваивается атрибут «имя», если вам нужно знать, с какой группой вы работаете.
Текущая реализация накладывает три требования на f:
f должен возвращать значение, имеющее ту же форму, что и входной подфрейм, или может быть расширено до формы входного подфрейма. Например, если f возвращает скалярное значение, оно будет расширено до той же формы, что и входной подфрейм.
если это DataFrame, f должен поддерживать применение по столбцам в подфрейме. Если f также поддерживает применение ко всему подфрейму, то используется быстрый путь, начиная со второй части.
f не должен изменять группы. Изменение не поддерживается и может привести к неожиданным результатам. Более подробную информацию см. в разделе Изменение с помощью пользовательских функций (UDF).
При использовании
engine='numba', внутренней «обработки по умолчанию» не будет. Данные группы и индекс группы будут переданы в функцию JIT, и альтернативные попытки выполнения не будут предприниматься.Изменено в версии 1.3.0: Тип результата будет отражать возвращаемое значение переданной
func, см. примеры ниже.Изменено в версии 2.0.0: При использовании
.transformна сгруппированном DataFrame и функции преобразования возвращает DataFrame, pandas теперь выравнивает индекс результата с индексом входных данных. Вы можете вызвать.to_numpy()на результате функции преобразования, чтобы избежать выравнивания.Примеры
>>> ser = pd.Series([390.0, 350.0, 30.0, 20.0], ... index=["Falcon", "Falcon", "Parrot", "Parrot"], ... name="Max Speed") >>> grouped = ser.groupby([1, 1, 2, 2]) >>> grouped.transform(lambda x: (x - x.mean()) / x.std()) Falcon 0.707107 Falcon -0.707107 Parrot 0.707107 Parrot -0.707107 Name: Max Speed, dtype: float64Результат преобразования с расширением
>>> grouped.transform(lambda x: x.max() - x.min()) Falcon 40.0 Falcon 40.0 Parrot 10.0 Parrot 10.0 Name: Max Speed, dtype: float64
>>> grouped.transform("mean") Falcon 370.0 Falcon 370.0 Parrot 25.0 Parrot 25.0 Name: Max Speed, dtype: float64Изменено в версии 1.3.0.
Тип результата будет отражать возвращаемое значение переданной
func, например:>>> grouped.transform(lambda x: x.astype(int).max()) Falcon 390 Falcon 390 Parrot 30 Parrot 30 Name: Max Speed, 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.transform.html