Spec-Zone.ru › pandas 1

pandas.DataFrame.apply

DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwargs)[source]

Применение функции вдоль оси DataFrame.

Объекты, передаваемые в функцию, являются объектами Series, индекс которых является либо индексом DataFrame (axis=0) , либо столбцами DataFrame (axis=1). По умолчанию (result_type=None) конечный тип возвращаемого значения определяется по типу возвращаемого значения применяемой функции. В противном случае он зависит от аргумента result_type.

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

Функция, применяемая к каждому столбцу или строке.

axis:{0 или ‘index’, 1 или ‘columns’}, по умолчанию 0

Ось, вдоль которой применяется функция:

  • 0 или ‘index’: применение функции к каждому столбцу.

  • 1 или ‘columns’: применение функции к каждой строке.

raw:bool, по умолчанию False

Определяет, передается ли строка или столбец как объект Series или ndarray:

  • False : передает каждую строку или столбец в функцию как объект Series.

  • True : переданная функция будет получать объекты ndarray. Если вы просто применяете функцию сокращения NumPy, это обеспечит гораздо лучшую производительность.

result_type:{‘expand’, ‘reduce’, ‘broadcast’, None}, по умолчанию None

Эти параметры действуют только при применении к axis=1 (столбцам):

  • ‘expand’ : спископодобные результаты будут преобразованы в столбцы.

  • ‘reduce’ : возвращает Series, если это возможно, вместо расширения спископодобных результатов. Это противоположность ‘expand’.

  • ‘broadcast’ : результаты будут транслироваться к исходной форме DataFrame, исходный индекс и столбцы будут сохранены.

Поведение по умолчанию (None) зависит от возвращаемого значения применяемой функции: спископодобные результаты будут возвращены как Series из этих результатов. Однако, если функция apply возвращает Series, они расширяются до столбцов.

args:кортеж

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

**kwargs

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

Возвращаемое значение
Series или DataFrame

Результат применения func вдоль заданной оси DataFrame.

См. также

DataFrame.applymap

Для поэлементных операций.

DataFrame.aggregate

Только для агрегирующих операций.

DataFrame.transform

Только для операций преобразования.

Замечания

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

Примеры

>>> df = pd.DataFrame([[4, 9]] * 3, columns=['A', 'B'])
>>> df
   A  B
0  4  9
1  4  9
2  4  9

Использование универсальной функции numpy (в данном случае эквивалентной np.sqrt(df)):

>>> df.apply(np.sqrt)
     A    B
0  2.0  3.0
1  2.0  3.0
2  2.0  3.0

Использование сокращающей функции по любой оси

>>> df.apply(np.sum, axis=0)
A    12
B    27
dtype: int64
>>> df.apply(np.sum, axis=1)
0    13
1    13
2    13
dtype: int64

Возврат спископодобного объекта приведет к возврату Series

>>> df.apply(lambda x: [1, 2], axis=1)
0    [1, 2]
1    [1, 2]
2    [1, 2]
dtype: object

Передача result_type='expand' расширит спископодобные результаты до столбцов DataFrame

>>> df.apply(lambda x: [1, 2], axis=1, result_type='expand')
   0  1
0  1  2
1  1  2
2  1  2

Возврат Series внутри функции аналогичен передаче result_type='expand'. Имена результирующих столбцов будут индексом Series.

>>> df.apply(lambda x: pd.Series([1, 2], index=['foo', 'bar']), axis=1)
   foo  bar
0    1    2
1    1    2
2    1    2

Передача result_type='broadcast' гарантирует одинаковую форму результата, независимо от того, возвращается ли функцией спископодобный объект или скалярное значение, и транслирует его вдоль оси. Имена результирующих столбцов будут исходными.

>>> df.apply(lambda x: [1, 2], axis=1, result_type='broadcast')
   A  B
0  1  2
1  1  2
2  1  2

© 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.DataFrame.apply.html

Spec-Zone.ru

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