Нет, не используйте lambda
Вы можете сделать это векторизовано:
import numpy as np
df['C'] = np.where(df['A'] + df['B'] == 0, 'X', 'Y')
Решение lambda
не имеет здесь никакой выгоды, но если вы этого хотите ....
df = df.assign(C=np.where(df.pipe(lambda x: x['A'] + x['B'] == 0), 'X', 'Y'))
Способ использования bad assign
+ lambda
:
df = df.assign(C=df.apply(lambda x: 'X' if x.A + x.B == 0 else 'Y', axis=1))
Что не так с способом bad если вы перебираете строки в цикле уровня Python.Это часто хуже , чем обычный цикл Python for
.
Первые два решения выполняют векторизованные операции над смежными блоками памяти и в результате обрабатываются более эффективно.