Quiero reemplazar los valores nulos en una columna con los valores en una columna adyacente, por ejemplo, si tengo
A|B 0,1 2,null 3,null 4,2
Quiero que sea
A|B 0,1 2,2 3,3 4,2
Probado con
df.na.fill(df.A,"B")
Pero no funcionó, dice que el valor debe ser float, int, long, string o dict
¿Algunas ideas?
Al final encontré una alternativa:
df.withColumn("B",coalesce(df.B,df.A))
Otra respuesta.
Si a continuación df1
su dataframe
rd1 = sc.parallelize([(0,1), (2,None), (3,None), (4,2)]) df1 = rd1.toDF(['A', 'B']) from pyspark.sql.functions import when df1.select('A', when( df1.B.isNull(), df1.A).otherwise(df1.B).alias('B') )\ .show()
df.rdd.map(lambda row: row if row[1] else Row(a=row[0],b=row[0])).toDF().show()