новый столбец с результатом сравнения

Столкнулся с проблемой заполнения нового столбца по итогам сравнения 2х столбцов в df:

      A      B
0   NaN    1.0
1   1.0    NaN
2  10.0  300.0
3   3.0    3.0

Пытался сделать:

df['C'] = 'Да' if df['A'] > 5 and df['B'] < 400 else 'Нет'

но возникает ошибка:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

Желаемый результат:

      A      B    С
0   NaN    1.0   NaN
1   1.0    NaN   NaN
2  10.0  300.0   Да
3   3.0    3.0   Нет

Направьте пожалуйста в каком направлении копать.... Вот код моего примера:

import pandas as pd
import numpy as np

df = pd.DataFrame({
                'A':[np.nan, 1, 10, 3], 
                'B':[1, np.nan, 300, 3]
                })

df['C'] = 'Да' if df['A'] > 5 and df['B'] < 400 else 'Нет'

print(df)

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

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

Попробуйте так:

In [14]: df["C"] = (df
                    .dropna(subset=["A", "B"])
                    .eval("A > 5 and B < 400")
                    .replace([True, False], ["Да", "Нет"]))

In [15]: df
Out[15]:
      A      B    C
0   NaN    1.0  NaN
1   1.0    NaN  NaN
2  10.0  300.0   Да
3   3.0    3.0  Нет
→ Ссылка