Saltar al contenido

Cómo reemplazar todos los valores nulos de un marco de datos en Pyspark

Puede que se de el caso de que halles algún fallo en tu código o proyecto, recuerda probar siempre en un ambiente de testing antes añadir el código al proyecto final.

Solución:

Puedes usar df.na.fill para reemplazar nulos con ceros, por ejemplo:

>>> df = spark.createDataFrame([(1,), (2,), (3,), (None,)], ['col'])
>>> df.show()
+----+
| col|
+----+
|   1|
|   2|
|   3|
|null|
+----+

>>> df.na.fill(0).show()
+---+
|col|
+---+
|  1|
|  2|
|  3|
|  0|
+---+

Puede usar la función fillna().

>>> df = spark.createDataFrame([(1,), (2,), (3,), (None,)], ['col'])
>>> df.show()
+----+
| col|
+----+
|   1|
|   2|
|   3|
|null|
+----+

>>> df = df.fillna('col':'4')
>>> df.show()

or df.fillna('col':'4').show()

+---+
|col|
+---+
|  1|
|  2|
|  3|
|  4|
+---+

Usando fillna hay 3 opciones…

Documentación:

def fillna(self, value, subset=None):
   """Replace null values, alias for ``na.fill()``.
   :func:`DataFrame.fillna` and :func:`DataFrameNaFunctions.fill` are aliases of each other.

   :param value: int, long, float, string, bool or dict.
       Value to replace null values with.
       If the value is a dict, then `subset` is ignored and `value` must be a mapping
       from column name (string) to replacement value. The replacement value must be
       an int, long, float, boolean, or string.
   :param subset: optional list of column names to consider.
       Columns specified in subset that do not have matching data type are ignored.
       For example, if `value` is a string, and subset contains a non-string column,
       then the non-string column is simply ignored.

Así que puedes:

  1. llenar todas las columnas con el mismo valor: df.fillna(value)
  2. pasar un diccionario de columna -> valor: df.fillna(dict_of_col_to_value)
  3. pasar una lista de columnas para llenar con el mismo valor: df.fillna(value, subset=list_of_cols)

fillna() es un alias para na.fill() pues son iguales.

Calificaciones y reseñas

Eres capaz de añadir valor a nuestro contenido asistiendo con tu veteranía en los informes.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *