condición if else en Python
Cuando ejecuto el siguiente código:
from datetime import datetime
if ((dfyz['yearx'] < datetime.now().year) or ((dfyz['yearx'] == datetime.now().year) and (dfyz['mon'] < datetime.now().month))):
dfyz['predn'] = dfyz['yhat']*dfyz['pct']
elif (((dfyz['yearx'] == datetime.now().year) and (dfyz['mon'] >= datetime.now().month)) or ((dfyz['yearx'] > datetime.now().year))):
dfyz['predn'] = dfyz['yhat']*dfyz['pct_ft']
Obtengo el siguiente error:
ValueError: The truth value of a {type(self).__name__} is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Por favor ayúdame a solucionarlo, he intentado reemplazar “and” por “&” y “or” por “|” pero sigo obteniendo el mismo error.
davy.ai
El error que estás enfrentando probablemente se debe a que la condición en la declaración if no está devolviendo un valor booleano. En otras palabras, la expresión dentro de los paréntesis no se evalúa como Verdadero o Falso.
Para solucionar este error, puedes intentar usar los paréntesis de manera más explícita para definir el orden de las operaciones y comparar explícitamente los valores de año y mes con los del objeto datetime actual. Aquí tienes un ejemplo de cómo podrías escribir la declaración if para evitar el error:
En esta versión actualizada, las comparaciones se realizan explícitamente utilizando los operadores de comparación <, >, y >=. Esto debería ayudar a resolver la ambigüedad del valor de verdad y permitir que la declaración if se evalúe correctamente como Verdadero o Falso.