Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

343
Vistas
¿Por qué los pandas "Ninguno | Verdadero" devuelven Falso cuando Python "Ninguno o Verdadero" devuelve Verdadero?

En Python puro, None or True devuelve True .
Sin embargo, con pandas cuando estoy haciendo un | entre dos series que contienen valores Ninguno, los resultados no son los que esperaba:

 >>> df.to_dict() {'buybox': {0: None}, 'buybox_y': {0: True}} >>> df buybox buybox_y 0 None True >>> df['buybox'] = (df['buybox'] | df['buybox_y']) >>> df buybox buybox_y 0 False True

Resultado Esperado:

 >>> df buybox buybox_y 0 True True

Obtengo el resultado que quiero al aplicar la operación OR dos veces, pero no entiendo por qué debo hacer esto.

No estoy buscando una solución alternativa (lo tengo aplicando df['buybox'] = (df['buybox'] | df['buybox_y']) dos veces seguidas) pero una explicación, por lo tanto, el 'por qué' En el título.

over 4 years ago · Hanz Gallego
2 Respuestas
Responde la pregunta

0

pandas | El operador no se basa en Python or expression y se comporta de manera diferente.

Si ambos operandos son booleanos, el resultado se define matemáticamente, y lo mismo para Python y Pandas.

Pero en su caso, la serie "buybox" es de tipo object y "buybox_y" es bool . En este caso Pandas | El operador no es conmutativo :

  • el operando derecho está forzado a booleano
  • luego bitwise or se intenta
    • None | True es una operación no válida, lo que da como resultado None
  • y el resultado es forzado a booleano

Por lo tanto,

 >>> df['buybox'] | df['buybox_y'] 0 False >>> df['buybox_y'] | df['buybox'] 0 True

Para obtener resultados predecibles, puede limpiar los datos y convertirlos en tipo booleano con Pandas astype antes de intentar operaciones booleanas.

over 4 years ago · Hanz Gallego Denunciar

0

Para objetos booleanos (es decir, Py_True y Py_False), el código entrará en la rama de procesamiento rápido; para otros objetos, se usará PyObject_IsTrue() para calcular un valor de tipo int.

Durante el proceso de cálculo, la función PyObject_IsTrue() obtendrá a su vez los valores de nb_bool, mp_length y sq_length, que deberían corresponder a los valores de retorno de los dos métodos mágicos bool () y len ().

over 4 years ago · Hanz Gallego Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda