Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

363
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!