Je veux remplacer les valeurs nulles dans une colonne par les valeurs d'une colonne adjacente, par exemple si j'ai
A|B
0,1
2,null
3,null
4,2
Je veux que ce soit:
A|B
0,1
2,2
3,3
4,2
Essayé avec
df.na.fill(df.A,"B")
Mais ça n'a pas marché, ça veut dire que la valeur devrait être un float, int, long, string ou dict
Des idées?
À la fin trouvé une alternative:
df.withColumn("B",coalesce(df.B,df.A))
Une autre réponse.
Si le df1
ci-dessous votre 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()