Метод apply
Метод apply применяется к Series
и позволяет применить пользовательскую функцию
к каждому элементу или к всей серии целиком.
Первым параметром передаётся функция-колбэк,
вторым - дополнительные аргументы.
Метод возвращает новую Series с результатами
применения функции.
Синтаксис
ser.apply(func, args=(), **kwargs)
Пример
Давайте применим лямбда-функцию для возведения каждого элемента серии в квадрат:
import pandas as pd
ser = pd.Series([1, 2, 3, 4, 5])
res = ser.apply(lambda x: x ** 2)
print(res)
Результат выполнения кода:
0 1
1 4
2 9
3 16
4 25
dtype: int64
Пример
Применим функцию, которая переводит числовое значение в строку с префиксом:
import pandas as pd
def add_prefix(x):
return "value: " + str(x)
ser = pd.Series([10, 20, 30, 40, 50])
res = ser.apply(add_prefix)
print(res)
Результат выполнения кода:
0 value: 10
1 value: 20
2 value: 30
3 value: 40
4 value: 50
dtype: object
Пример
Применим функцию с дополнительными аргументами через параметр args:
import pandas as pd
def power(x, exp):
return x ** exp
ser = pd.Series([1, 2, 3, 4, 5])
res = ser.apply(power, args=(3,))
print(res)
Результат выполнения кода:
0 1
1 8
2 27
3 64
4 125
dtype: int64
Пример
С помощью apply можно применить функцию, которая возвращает несколько значений, например, кортеж:
import pandas as pd
def min_max(x):
return (x - 1, x + 1)
ser = pd.Series([10, 20, 30, 40, 50])
res = ser.apply(min_max)
print(res)
Результат выполнения кода:
0 (9, 11)
1 (19, 21)
2 (29, 31)
3 (39, 41)
4 (49, 51)
dtype: object
Пример
Применим функцию для извлечения первого символа из строковых значений серии:
import pandas as pd
ser = pd.Series(['abcde', 'article', 'user', 'data.csv'])
res = ser.apply(lambda x: x[0])
print(res)
Результат выполнения кода:
0 a
1 a
2 u
3 d
dtype: object
Пример
С помощью apply можно применить условную логику к каждому элементу серии:
import pandas as pd
def classify(x):
if x > 0:
return "positive"
elif x < 0:
return "negative"
else:
return "zero"
ser = pd.Series([-2, -1, 0, 1, 2])
res = ser.apply(classify)
print(res)
Результат выполнения кода:
0 negative
1 negative
2 zero
3 positive
4 positive
dtype: object