Поиск по сайту:

Pandas DataFrame apply() Примеры


Функция Pandas DataFrame apply() используется для применения функции вдоль оси DataFrame. Синтаксис функции:

def apply(
    self,
    func,
    axis=0,
    broadcast=None,
    raw=False,
    reduce=None,
    result_type=None,
    args=(),
    **kwds
)

Важными параметрами являются:

  • func: функция, применяемая к каждой строке или столбцу DataFrame.
  • ось: ось, вдоль которой применяется функция. Возможные значения: {0 или «индекс», 1 или «столбцы»}, по умолчанию 0.
  • args: позиционные аргументы для передачи функции. Это полезно, когда нам нужно передать функции дополнительные аргументы.
  • kwargs: дополнительные аргументы ключевого слова для передачи в функцию. Это полезно, когда нам нужно передать функции дополнительные аргументы ключевого слова.

Pandas DataFrame apply() Примеры

Давайте рассмотрим несколько примеров использования функции apply() для объекта DataFrame.

1. Применение функции к элементам DataFrame

import pandas as pd

df = pd.DataFrame({'A': [1, 2], 'B': [10, 20]})


def square(x):
    return x * x


df1 = df.apply(square)

print(df)
print(df1)

Выход:

   A   B
0  1  10
1  2  20

   A    B
0  1  100
1  4  400

DataFrame, для которого вызывается функция apply(), остается неизменным. Функция apply() возвращает новый объект DataFrame после применения функции к его элементам.

2. применить() с лямбдой

Если вы посмотрите на приведенный выше пример, наша функция Square() очень проста. Мы можем легко преобразовать его в лямбда-функцию. Мы можем создать лямбда-функцию при вызове функции apply().

df1 = df.apply(lambda x: x * x)

Вывод останется таким же, как в последнем примере.

3. применить() по оси

Мы можем применить функцию вдоль оси. Но в последнем примере ось не используется. Функция применяется ко всем элементам DataFrame. Использование оси становится понятным, когда мы вызываем агрегатную функцию для строк или столбцов DataFrame. Допустим, мы хотим получить сумму элементов по столбцам или индексам. Вывод будет отличаться в зависимости от значения аргумента оси.

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': [1, 2], 'B': [10, 20]})

df1 = df.apply(np.sum, axis=0)
print(df1)

df1 = df.apply(np.sum, axis=1)
print(df1)

Выход:

A     3
B    30
dtype: int64

0    11
1    22
dtype: int64

В первом примере вычисляется сумма элементов по столбцу. Тогда как во втором примере вычисляется сумма элементов по строке.

4. DataFrame apply() с аргументами

Допустим, мы хотим применить функцию, которая принимает более одного параметра. В этом случае мы можем передать дополнительные параметры с помощью аргумента «args».

import pandas as pd


def sum(x, y, z):
    return x + y + z


df = pd.DataFrame({'A': [1, 2], 'B': [10, 20]})

df1 = df.apply(sum, args=(1, 2))
print(df1)

Выход:

   A   B
0  4  13
1  5  23

5. DataFrame apply() с позиционными и ключевыми аргументами

Давайте рассмотрим пример, в котором мы будем использовать параметры «args» и «kwargs» для передачи позиционных и ключевых аргументов в функцию.

import pandas as pd


def sum(x, y, z, m):
    return (x + y + z) * m


df = pd.DataFrame({'A': [1, 2], 'B': [10, 20]})

df1 = df.apply(sum, args=(1, 2), m=10)
print(df1)

Выход:

    A    B
0  40  130
1  50  230

Функция применения карты() DataFrame

Если вы хотите применить функцию поэлементно, вы можете использовать функцию applymap(). Эта функция не имеет дополнительных аргументов. Функция применяется к каждому элементу, а возвращаемое значение используется для создания результирующего объекта DataFrame.

import pandas as pd
import math

df = pd.DataFrame({'A': [1, 4], 'B': [100, 400]})
df1 = df.applymap(math.sqrt)

print(df)
print(df1)

Выход:

   A    B
0  1  100
1  4  400
     A     B
0  1.0  10.0
1  2.0  20.0

Давайте посмотрим на другой пример, где мы будем использовать функцию applymap() для преобразования значений всех элементов в верхний регистр.

import pandas as pd

df = pd.DataFrame({'Name': ['Pankaj', 'Meghna'], 'Role': ['ceo', 'cto']})

df1 = df.applymap(str.upper)

print(df)
print(df1)

Выход:

     Name Role
0  Pankaj  ceo
1  Meghna  cto

     Name Role
0  PANKAJ  CEO
1  MEGHNA  CTO

Рекомендации

  • Учебное пособие по Python Pandas
  • Документ по API Pandas apply()