У меня есть df
с именем data
следующим образом:
id upper_ci lower_ci max_power_contractual
0 12858 60.19878860406808 49.827481214215204 0
1 12858 60.61189293066522 49.298784196530896 0
2 12858 60.34397624424309 49.718421137642885 70
3 12858 59.87472261936114 49.464255779713476 10
4 12858 60.2735279368527 49.41672240525131 0
Я пытаюсь создать новый столбец с именем up_threshold
следующим образом:
- Если значение
max_power_contractual
равно нулю (0
) или NaN
, тогда значение в up_threshold
должно быть значением в upper_ci
- Если значение
max_power_contractual
равно не ноль, и условие: max_power_contractual > upper_ci
равно True
, тогда значение в up_threshold
должно быть значением в upper_ci
- Если значение
max_power_contractual < upper_ci
равно True
, тогда значение в up_threshold
должно быть значением в max_power_contractual
Я пробовал:
if (data['max_power_contractual'] in (0, np.nan)) or (data['max_power_contractual'] > data['upper_ci']):
data['up_threshold'] = data['upper_ci']
elif (data['upper_ci'] > data['max_power_contractual'] == 0):
data['up_threshold'] = data['max_power_contractual']
Но это дает мне следующую ошибку:
Traceback (последний вызов последний):
Файл "/home/cortex/.config/spyder-py3/temp.py", строка 179, в data = cp_detection (data, threshold)
Файл "/home/cortex/.config/spyder-py3/temp.py", строка 146, в cp_detection if data ['max_power_contractual'] == 0:
Файл "/ home / cortex / .local / lib / python3 .7 / site-packages / pandas / core / generi c .py », строка 1479 , in ненулевое значение f "Истинное значение {type (self). name } неоднозначно. "
ValueError: Истинное значение Серии неоднозначно. Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().
Кто-нибудь, пожалуйста, скажите мне мою ошибку и как я могу ее исправить?
Ожидаемый результат:
id upper_ci lower_ci max_power_contractual up_threshold
0 12858 60.19878860406808 49.827481214215204 0 60.19878860406808 (Since `max_power_contractual` value is 0)
1 12858 60.61189293066522 49.298784196530896 NaN 60.61189293066522 (Since `max_power_contractual` value is NaN)
2 12858 60.34397624424309 49.718421137642885 70 60.34397624424309 (Since `upper_ci < max_power_contractual`)
3 12858 59.87472261936114 49.464255779713476 10 10 (Since `upper_ci > max_power_contractual`)