новый столбец с результатом сравнения
Столкнулся с проблемой заполнения нового столбца по итогам сравнения 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 Нет