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

Метод transform

Метод transform применяется к объекту GroupBy и возвращает объект той же формы, что и исходные данные. В отличие от agg, который сворачивает группы, transform сохраняет индекс и позволяет транслировать результаты групповых операций обратно на каждую строку. Первым параметром передаётся функция, которая применяется к каждой группе.

Синтаксис

df.groupby(by).transform(func, *args, **kwargs)

Пример

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

import pandas as pd df = pd.DataFrame({ 'a': [1, 1, 2, 2, 3], 'b': [10, 20, 30, 40, 50] }) df['mean_b'] = df.groupby('a')['b'].transform('mean') print(df)

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

a b mean_b 0 1 10 15.0 1 1 20 15.0 2 2 30 35.0 3 2 40 35.0 4 3 50 50.0

Пример

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

import pandas as pd df = pd.DataFrame({ 'a': [1, 1, 2, 2, 3], 'b': [10, 20, 30, 40, 50] }) df['b_centered'] = df.groupby('a')['b'].transform( lambda x: x - x.mean() ) print(df)

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

a b b_centered 0 1 10 -5.0 1 1 20 5.0 2 2 30 -5.0 3 2 40 5.0 4 3 50 0.0

Пример

Метод transform также умеет работать с несколькими столбцами. Применим функцию к целой группе:

import pandas as pd df = pd.DataFrame({ 'a': [1, 1, 2, 2, 3], 'b': [10, 20, 30, 40, 50], 'c': [100, 200, 300, 400, 500] }) df_grouped = df.groupby('a').transform(lambda x: x / x.sum()) print(df_grouped)

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

b c 0 0.333333 0.333333 1 0.666667 0.666667 2 0.428571 0.428571 3 0.571429 0.571429 4 1.000000 1.000000

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

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