Pandas where con nan's

Forums

Hola, no consigo resolver una cuestión: tengo una serie pandas algunos de cuyos valores son NaN. Y querría usar el método where para sustituir los NaN's por el valor de otra serie pandas, tipo:

a.where(a != np.nan, b)

La cuestión es que ese np.nan no me está identificando los NaNs (no los reconoce como tales) y deja siempre la serie original.

Si alguien tiene alguna sugerencia, será bienvenida :)

¡No puedo creer que no haya probado eso! Lo que no entiendo es porqué no sirve algo como

a.where(not(a.isnull()), b)

Pandas devuelve el típico mensaje de "The truth value of a Series is ambiguous. blablabla", pero no le veo el sentido, la verdad. Al final estás probando "si no es nulo" o "lo contrario de si es nulo". En fin, lección aprendida, muchas gracias José.

Alberto

Hola Alberto,

El problema está en el "not" ese. Mira la siguiente imagen: he creado una serie que incluye un NaN:

Pandas where con nan's

Tanto .notnull() como .isnull() ejecutan correctamente su cometido (uno es el complemento del otro). Pero si a la función not le das como argumento una serie completa, te dice que no es capaz de decidir qué quieres hacer. La única forma sería recurrir a alguna función un poco más sofisticada, como np.logical_not():

Pandas where con nan's

Un saludo

José

Enviado por Alberto_th el Lun, 26/08/2019 - 17:52