es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Crear una nueva columna con withColumn si no existe.

Tengo un dataframe con algunas columnas, digamos que se llaman

|Estado|Color|Conteo

Quiero comprobar si una columna existe o no en ese dataframe para saber si tengo que crearla o no. Sé que para este pequeño ejemplo es bastante inútil hacerlo porque sólo tengo 3 columnas y podría hacerlo manualmente, pero quiero saber la forma de hacerlo con DFs más grandes.
Al principio pensé en esto:

var cols = df.columns
df.withColumn("x", when(col("x").between(cols(0), cols(cols.length-1)), 5).otherwise(null))

Mi intención con eso era comprobar si la columna “x” estaba en el DF (en la colección de sus columnas) y si no lo estaba, crearla con el método withColumn con valores nulos, pero no sé si eso es correcto.
¿Hay alguna otra forma de hacerlo? Mis otras ideas son hacerlo con un loop foreach y con ifs, pero no creo que sea eficiente.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay otra forma de hacer esto. Puedes usar el método DataFrame.contains() para verificar si una columna existe en el dataframe. Por ejemplo, puedes usar el siguiente código para comprobar si la columna x existe en el dataframe:

    if (df.contains("x")) {
      // La columna existe
    } else {
      // La columna no existe
    }
    

    Si la columna no existe, puedes usar el método DataFrame.withColumn() para crearla. Por ejemplo, puedes usar el siguiente código para crear una columna x con valores nulos:

    df.withColumn("x", lit(null))
    

Comments are closed.