df['column'].apply(lambda x: x * 2)
)df[df['column'].apply(lambda x: x > 10)]
)df['new_column'] = df.apply(lambda row: row['col1'] + row['col2'], axis=1)
)В Pandas лямбда-функции особенно полезны для кратких и простых операций с данными, которые можно применить ко всему DataFrame или Series без необходимости определять отдельную функцию.
Примеры использования:
Лямбда-функции позволяют быстро преобразовывать значения в столбце (Series). Например, преобразовать значения температуры из градусов Цельсия в Фаренгейты:
import pandas as pd
data = {'Температура_C': [20, 25, 30, 22]}
df = pd.DataFrame(data)
df['Температура_F'] = df['Температура_C'].apply(lambda x: (x * 9/5) + 32)
print(df)
Можно применять лямбда-функции к каждой строке DataFrame, используя метод apply
с параметром axis=1
. Это позволяет выполнять операции, зависящие от значений нескольких столбцов в каждой строке:
import pandas as pd
data = {'Имя': ['Alice', 'Bob', 'Charlie'], 'Возраст': [25, 30, 28], 'Зарплата': [50000, 60000, 55000]}
df = pd.DataFrame(data)
df['Бонус'] = df.apply(lambda row: row['Зарплата'] * 0.1 if row['Возраст'] > 27 else row['Зарплата'] * 0.05, axis=1)
print(df)
Лямбда-функции можно использовать для фильтрации DataFrame, создавая булевы маски на основе условий. Например, выбрать все строки, где значение в столбце 'Возраст' больше 25:
import pandas as pd
data = {'Имя': ['Alice', 'Bob', 'Charlie'], 'Возраст': [25, 30, 28]}
df = pd.DataFrame(data)
df_filtered = df[df['Возраст'].apply(lambda x: x > 25)]
print(df_filtered)
Лямбда-функции можно использовать вместе с replace
для условной замены значений. Например, заменить все значения меньше 0 на 0:
import pandas as pd
data = {'Значения': [-1, 5, -3, 2]}
df = pd.DataFrame(data)
df['Значения'] = df['Значения'].replace(lambda x: x if x >= 0 else 0, regex=True)
print(df)
Лямбда-функции очень удобны для операций со строковыми данными, например, для извлечения части строки или применения функций форматирования:
import pandas as pd
data = {'ФИО': ['Иванов Иван Иванович', 'Петров Петр Петрович', 'Сидоров Сидор Сидорович']}
df = pd.DataFrame(data)
df['Фамилия'] = df['ФИО'].apply(lambda x: x.split()[0])
print(df)
Преимущества использования:
Важно помнить: Для более сложных операций рекомендуется определять именованные функции, чтобы код оставался читаемым и поддерживаемым. Чрезмерное использование лямбда-функций может ухудшить читаемость кода.