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 :)

Permalink

¡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

Permalink

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é

Submitted by Alberto_th on Mon, 08/26/2019 - 17:52