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('''')