Запись значений исходя из множества условий

Имею:

import pandas as pd    
df = pd.DataFrame({'column1': ['name1', 'name2', 'name3'], 'column2': [100, 100, 500], 'column3': [100, '', 400]}) 
df

На выходе:

  column1  column2  column3
0   name1      100      100
1   name2      100      
2   name3      500      400

Задача:

В новую column4 вывести:

  • "Условие_1" если column1 = name1 и column2 = column3
  • "Условие_2" если column1 = name2 или name3 и column2 > column3
  • "Значение пропущено" если в column2 или column3 есть пустота
  • "Пропустить" во всех других случаях

Вот, что хочу получить:

  column1  column2  column3     column4
0   name1      100      100  Услоавие_1
1   name2      100           Значение пропущено
2   name3      500      400  Услоавие_2

Буду благодарен за развернутый ответ, т.к. мои попытки решить не увенчались даже кусочком рабочего кода.

Какой вариант оптимальней будет применить? В обучающих статьях и ответах на аналогичные вопросы применяют разные методы.

Моя попытка решения:

df['column4'] = apply.[lambda x: "Условие_1" if x == 'name1' and df['column2']=df['column3'] else 'пропустить' for x in df['column1']]

Ответы (1 шт):

Автор решения: MaxU

Входной фрейм (обратите внимание на NaN вместо '' во второй строке):

In [11]: df
Out[11]:
  column1  column2  column3
0   name1      100    100.0
1   name2      100      NaN
2   name3      500    400.0

решение (орфография авторов для значений строк сохранена):

df.loc[df.query("column1 == 'name1' and column2 == column3").index, "column4"] = "Услоавие_1"

df.loc[df.query("column1 in ('name2', 'name3') and column2 > column3").index, "column4"] = "Услоавие_2"

df.loc[df["column2"].isna() | df["column3"].isna(), "column4"] = "Значение пропущено"

результат:

In [21]: df
Out[21]:
  column1  column2  column3             column4
0   name1      100    100.0          Услоавие_1
1   name2      100      NaN  Значение пропущено
2   name3      500    400.0          Услоавие_2
→ Ссылка