python pandas dataframe nan

python - fillna pandas



Pandas Reemplazar NaN con una cadena en blanco/vacĂ­a (8)

Tengo un marco de datos de Pandas como se muestra a continuación:

1 2 3 0 a NaN read 1 b l unread 2 c NaN read

Quiero eliminar los valores de NaN con una cadena vacía para que se vea así:

1 2 3 0 a "" read 1 b l unread 2 c "" read


Intenté con una columna de valores de cadena con nan.

Para eliminar el nan y llenar la cadena vacía:

df.columnname.replace(np.nan,'''',regex = True)

Para eliminar el nan y llenar algunos valores:

df.columnname.replace(np.nan,''value'',regex = True)

Intenté df.iloc también. pero necesita el índice de la columna. así que debes mirar hacia la mesa nuevamente. simplemente el método anterior redujo un paso.


Prueba esto,

agregar inplace=True

import numpy as np df.replace(np.NaN, '' '', inplace=True)


Si está convirtiendo DataFrame a JSON, NaN dará un error, por lo que la mejor solución es, en este caso de uso, reemplazar NaN con None .
Aquí es cómo:

df1 = df.where((pd.notnull(df)), None)


Si está leyendo el marco de datos de un archivo (por ejemplo, CSV o Excel), use:

  • df.read_csv(path , na_filter=False)
  • df.read_excel(path , na_filter=False)

Esto considerará automáticamente los campos vacíos como cadenas vacías ''''

Si ya tiene el marco de datos

  • df = df.replace(np.nan, '''', regex=True)
  • df = df.fillna('''')

usando keep_default_na=False debería ayudarte:

df = pd.read_csv(filename, keep_default_na=False)


Use un formateador, si solo desea formatearlo para que se vea bien cuando se imprima . Simplemente use el df.to_string(... formatters para definir el df.to_string(... formatters de cadena personalizado, sin modificar innecesariamente su DataFrame o desperdiciar memoria:

df = pd.DataFrame({ ''A'': [''a'', ''b'', ''c''], ''B'': [np.nan, 1, np.nan], ''C'': [''read'', ''unread'', ''read'']}) print df.to_string( formatters={''B'': lambda x: '''' if pd.isnull(x) else ''{:.0f}''.format(x)})

Llegar:

A B C 0 a read 1 b 1 unread 2 c read


import numpy as np df1 = df.replace(np.nan, '''', regex=True)

Esto puede ayudar. Reemplazará todos los NaN con una cadena vacía.


df = df.fillna('''')

o solo

df.fillna('''', inplace=True)

Esto llenará na''s (por ejemplo, NaN''s) con '''' .

Si desea llenar una sola columna, puede usar:

df[column1] = df.column1.fillna('''')