pandas.Series.transform#

Series.преобразовать(функция, ось=0, *args, **kwargs)[источник]#

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

Параметры:
функцияфункция, строка, список или словарь

Функция для преобразования данных. Если это функция, она должна работать либо при передаче Series, либо при передаче в Series.apply. Если func является одновременно списком и словарем, поведение как словаря имеет приоритет.

Допустимые комбинации:

  • функция

  • имя строковой функции

  • список функций и/или их названий, например, [np.exp, 'sqrt']

  • Словарь меток осей -> функции, имена функций или список таких.

ось{0 или ‘index’}

Не используется. Параметр необходим для совместимости с DataFrame.

*args

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

**kwargs

Именованные аргументы для передачи в функция.

Возвращает:
Series

Series, которая должна иметь ту же длину, что и self.

Вызывает:
ValueErrorЕсли возвращаемый Series имеет другую длину, чем self.

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

Series.agg

Выполнять только агрегирующие операции типа.

Series.apply

Вызвать функцию на Series.

Примечания

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

Примеры

>>> df = pd.DataFrame({'A': range(3), 'B': range(1, 4)})
>>> df
   A  B
0  0  1
1  1  2
2  2  3
>>> df.transform(lambda x: x + 1)
   A  B
0  1  2
1  2  3
2  3  4

Хотя результирующий Series должен иметь ту же длину, что и входной Series, можно предоставить несколько входных функций:

>>> s = pd.Series(range(3))
>>> s
0    0
1    1
2    2
dtype: int64
>>> s.transform([np.sqrt, np.exp])
       sqrt        exp
0  0.000000   1.000000
1  1.000000   2.718282
2  1.414214   7.389056

Вы можете вызвать transform на объекте GroupBy:

>>> df = pd.DataFrame({
...     "Date": [
...         "2015-05-08", "2015-05-07", "2015-05-06", "2015-05-05",
...         "2015-05-08", "2015-05-07", "2015-05-06", "2015-05-05"],
...     "Data": [5, 8, 6, 1, 50, 100, 60, 120],
... })
>>> df
         Date  Data
0  2015-05-08     5
1  2015-05-07     8
2  2015-05-06     6
3  2015-05-05     1
4  2015-05-08    50
5  2015-05-07   100
6  2015-05-06    60
7  2015-05-05   120
>>> df.groupby('Date')['Data'].transform('sum')
0     55
1    108
2     66
3    121
4     55
5    108
6     66
7    121
Name: Data, dtype: int64
>>> df = pd.DataFrame({
...     "c": [1, 1, 1, 2, 2, 2, 2],
...     "type": ["m", "n", "o", "m", "m", "n", "n"]
... })
>>> df
   c type
0  1    m
1  1    n
2  1    o
3  2    m
4  2    m
5  2    n
6  2    n
>>> df['size'] = df.groupby('c')['type'].transform(len)
>>> df
   c type size
0  1    m    3
1  1    n    3
2  1    o    3
3  2    m    4
4  2    m    4
5  2    n    4
6  2    n    4