¿Por qué los pandas de Python no usan la lógica de 3 valores?

Me pregunto por qué python pandas / numpy no implementa la lógica de 3 valores (llamada lógica de Łukasiewicz) con verdadero, falso y NA (como, por ejemplo, R). He leído ( https://www.oreilly.com/learning/handling-missing-data ) que esto se debe en cierta medida al hecho de que pandas usa muchos más tipos de datos básicos que R, por ejemplo. Sin embargo, esto no me queda del todo claro por qué, en este caso, es inevitable tener este extraño comportamiento de operaciones lógicas con valores perdidos.

Ejemplo.

import numpy as np np.nan and False # so far so good, we have False np.nan or False # again, good, we have nan False and np.nan # False, good False or np.nan # give nan, so again, it is correct np.nan and True # weird, this gives True, while it should give nan True and np.nan # nan, so it is correct, but switching order should not affect the result np.nan or True # gives nan, which is not correct, should be True True or np.nan # True so it is correct, again switching the arguments changes the result 

Entonces, el ejemplo muestra que algo muy extraño sucede en las comparaciones entre np.nan y los valores True . Entonces, ¿qué está pasando aquí?

EDITAR. Gracias por los comentarios, ahora veo que np.nan se considera un valor “verdadero”. Entonces, ¿alguien puede explicar qué significa esto exactamente y cuál es la razón detrás de este enfoque?

Este es un comportamiento numpy y, al menos parcialmente, heredado de python:

 In [11]: bool(float('nan')) Out[11]: True In [12]: bool(np.NaN) Out[12]: True 

(NaN es “la verdad”.)

Se equivocó al juzgar or declaraciones de yy.

or comprobaría si el primer valor es Verdadero en forma de bool(value) si es False entonces toma el segundo valor.

and por otro lado, comprueba si dos de los valores son True al mismo tiempo en forma de bool(value1) y bool(value2)