PySpark reemplaza nulo en columna con valor en otra columna

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()