У меня есть df (форма (5928, 22)), и я пытаюсь создать новый столбец и добавить значения на основе нескольких условий.
Условия будут:
if CH == 20 then value = 268,34
if CH == 24 then value = 322,02
if CH == 30 then value = 492,65
if CH == 40 then value = 536,69
and
if CH == 20 & ID in (5105561300, 5105561301, 5105561302, 5105561304) then value = 417,43
if CH == 24 & ID in (5105561300, 5105561301, 5105561302, 5105561304) then value = 500,91
if CH == 30 & ID in (5105561300, 5105561301, 5105561302, 5105561304) then value = 626,34
if CH == 40 & ID in (5105561300, 5105561301, 5105561302, 5105561304) then value = 834,85
Когда я пытаюсь добавить новый столбец и добавлять значения, основанные на первом блоке условий, он работает отлично.
new_value = []
for row in df['CH']:
if row == 20:
new_value.append(268.34)
elif row == 24:
new_value.append(322.02)
elif row == 30:
new_value.append(402.65)
elif row == 40:
new_value.append(536.69)
else:
new_value.append(0)
df['new_value'] = new_value
Когда я пытался добавить другие условия, это не сработало. Код будет что-то вроде:
new_value = []
for row in df['CH']:
if row == 20 and df['ID'] not in (5105561300, 5105561301, 5105561302, 5105561304):
new_value.append(268.34)
elif row == 20 and df['ID'] in (5105561300, 5105561301, 5105561302, 5105561304):
new_value.append(417.43)
elif row == 24 and df['ID'] not in (5105561300, 5105561301, 5105561302, 5105561304):
new_value.append(268.34)
elif row == 24 and df['ID'] in (5105561300, 5105561301, 5105561302, 5105561304):
new_value.append(500.91)
elif row == 30 and df['ID'] not in (5105561300, 5105561301, 5105561302, 5105561304):
new_value.append(268.34)
elif row == 30 and df['ID'] in (5105561300, 5105561301, 5105561302, 5105561304):
new_value.append(626.34)
elif row == 40 and df['ID'] not in (5105561300, 5105561301, 5105561302, 5105561304):
new_value.append(268.34)
elif row == 40 and df['ID'] in (5105561300, 5105561301, 5105561302, 5105561304):
new_value.append(834.85)
else:
new_value.append(0)
df['new_value'] = new_value
Когда я пробую код выше, я получаю следующее сообщение об ошибке:
ValueError: Значение истинности Серии неоднозначно. Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().
Я не знаю, как идти отсюда. В SQL я бы использовал два простых оператора WHERE, но я не могу заставить его работать в Python.