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.
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 columnax
existe en el dataframe: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 columnax
con valores nulos: