Reemplazo de valores en blanco (espacio en blanco) con NaN en pandas

Quiero encontrar todos los valores en un marco de datos de Pandas que contengan espacios en blanco (cualquier cantidad arbitraria) y reemplazar esos valores con NaN.

¿Alguna idea de cómo se puede mejorar esto?

Básicamente quiero convertir esto:

                   A    B    C
2000-01-01 -0.532681  foo    0
2000-01-02  1.490752  bar    1
2000-01-03 -1.387326  foo    2
2000-01-04  0.814772  baz     
2000-01-05 -0.222552         4
2000-01-06 -1.176781  qux     

Dentro de esto:

                   A     B     C
2000-01-01 -0.532681   foo     0
2000-01-02  1.490752   bar     1
2000-01-03 -1.387326   foo     2
2000-01-04  0.814772   baz   NaN
2000-01-05 -0.222552   NaN     4
2000-01-06 -1.176781   qux   NaN

Me las arreglé para hacerlo con el código de abajo, pero el hombre es feo. No es Pythonic y estoy seguro de que tampoco es el uso más eficiente de los pandas. Recorrí cada columna y realicé un reemplazo booleano contra una máscara de columna generada al aplicar una función que realiza una búsqueda de expresiones regulares de cada valor, coincidiendo con espacios en blanco.

for i in df.columns:
    df[i][df[i].apply(lambda i: True if re.search('^\s*

Podría optimizarse un poco iterando solo a través de campos que podrían contener cadenas vacías:

if df[i].dtype == np.dtype('object')

Pero eso no es una gran mejora.

Y, finalmente, este código establece las cadenas de destino en Ninguna, que funciona con las funciones de Pandas comofillna(), pero sería bueno para completar si realmente pudiera insertar unNaN directamente en lugar deNone.

, str(i)) else False)]=None

Podría optimizarse un poco iterando solo a través de campos que podrían contener cadenas vacías:

if df[i].dtype == np.dtype('object')

Pero eso no es una gran mejora.

Y, finalmente, este código establece las cadenas de destino en Ninguna, que funciona con las funciones de Pandas comofillna(), pero sería bueno para completar si realmente pudiera insertar unNaN directamente en lugar deNone.

Respuestas a la pregunta(10)

Su respuesta a la pregunta