HOWTO · Pandas

Cómo reemplazar todos los valores de NaN con ceros en una columna de un DataFrame de pandas

reemplace los valores NaN con ceros en DataFrame usando los métodos df.fillna(), df.replace() en la biblioteca pandas

En esta página

Para reemplazar los valores faltantes en una columna de un DataFrame de pandas, selecciona la columna, llama a fillna(0) y asigna la Serie devuelta a esa misma columna: df["A"] = df["A"].fillna(0). Esto modifica solo la columna A; las demás permanecen intactas. El método df.fillna() también puede completar los valores faltantes de todo un DataFrame, así que primero hay que seleccionar una Serie cuando la operación debe limitarse a una columna. El método df.replace() es una alternativa para reemplazar un valor específico en la Serie seleccionada.

Reemplazar valores NaN en una columna con fillna()

fillna() reemplaza los valores que pandas reconoce como faltantes por el valor que indiques. En el ejemplo, pandas representa None en una columna numérica como un valor faltante al crear el DataFrame. Al asignar el resultado de fillna(0) a df["A"], el reemplazo queda aplicado en df; si llamas al método sin asignar el resultado, la variable DataFrame no cambia. La segunda columna sirve de comparación y conserva su propio valor faltante.

Ejecuta este ejemplo:

El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.

import pandas as pd

df = pd.DataFrame({
    "A": [1, 2, None, 4],
    "B": [None, 2, 3, 4],
})

df["A"] = df["A"].fillna(0)
print(df.to_string())
     A    B
0  1.0  NaN
1  2.0  2.0
2  0.0  3.0
3  4.0  4.0

La salida muestra que el valor faltante de la columna A pasó a ser 0.0, mientras que el de la columna B sigue siendo NaN. Usa el mismo patrón de asignación con tu DataFrame y la columna que quieras modificar. fillna() también acepta otros valores de reemplazo y permite estrategias como el relleno hacia delante o hacia atrás; elígelas solo si corresponden al significado y al orden de tus datos. Si aplicas df.fillna(0) al DataFrame, se completan los valores faltantes de sus columnas, no solo los de A. El bloque de ejemplo y su salida conservan sus etiquetas originales en inglés.

Reemplazar valores NaN en una columna con replace()

replace() es otra opción para reemplazar un valor concreto o un conjunto de valores. Para apuntar a un valor faltante en una Serie, usa df["A"].replace(float("nan"), 0) y asigna la Serie devuelta a df["A"]. Así se proporciona explícitamente un valor NaN; no des por hecho que replace() siempre trata None como NaN. Al igual que con fillna(), usar el método en la Serie seleccionada limita la operación a esa columna. En cambio, llamar a df.replace(...) sobre todo el DataFrame puede afectar los valores coincidentes de varias columnas.

Para esta tarea, fillna() expresa directamente la intención. Usa replace() cuando resulte útil buscar valores concretos, por ejemplo, si también necesitas normalizar un marcador conocido en la columna seleccionada. En ambos casos, asigna el resultado devuelto si quieres que el código posterior use los datos modificados; no hace falta inplace=True para este patrón.

Elegir un valor de reemplazo adecuado para los datos

El cero es apropiado solo cuando representa el significado de una observación faltante en tu análisis. Por ejemplo, puede ser adecuado si un recuento ausente significa que no hubo eventos, pero puede distorsionar las mediciones cuando la ausencia significa «desconocido». Según la columna y el análisis, podría convenir más otra constante, un valor específico del dominio o una estadística como la media o la mediana. Decide cómo interpretar los valores faltantes antes de completarlos, porque reemplazarlos elimina la distinción entre una observación ausente y un cero real.

El valor de reemplazo también debe ser compatible con los datos de la columna. El cero numérico es adecuado para una columna numérica, mientras que rellenar una columna de texto con cero puede cambiar la forma en que pandas representa o procesa esos datos. Si los cálculos posteriores dependen de un tipo numérico, revisa el tipo de datos resultante. Los ejemplos de este artículo modifican solo la columna seleccionada, lo que ayuda a evitar cambios en datos no relacionados mientras decides qué valor usar.

Comprobar el resultado

Inspecciona la columna objetivo con df["A"] o muestra el DataFrame para confirmar que cambiaron los valores previstos. Para contar los valores faltantes que aún queden en esa columna, usa df["A"].isna().sum(); un recuento de cero significa que no quedan valores que pandas reconozca como faltantes en esa Serie. Esta comprobación no determina si el cero era la opción analítica adecuada, así que verifica también que el reemplazo concuerde con el significado de tus datos. Si el recuento no es cero, confirma que seleccionaste la columna correcta y asignaste allí la Serie devuelta por el método.