假设有一个RDD如下:
+----+--------------+-----+
| age|best_guess_age| name|
+----+--------------+-----+
| 23| 23|Alice|
|null| 18| Bob|
| 34| 32| Tom|
|null| 40|Linda|
+----+--------------+-----+
我们希望在age
列为空的情况下用best_guess_age
列填充
fillna
command需要一个实际值来代替na,我们不能简单地传递一个列。
该怎么做?
答案 0 :(得分:3)
您可以使用coalesce
功能;通过执行coalesce('age', 'best_guess_age')
,它将从age
列中获取值(如果不为空),否则将从best_guess_age
列中获取值:
from pyspark.sql.functions import coalesce
df.withColumn('age', coalesce('age', 'best_guess_age')).show()
+---+--------------+-----+
|age|best_guess_age| name|
+---+--------------+-----+
| 23| 23|Alice|
| 18| 18| Bob|
| 34| 32| Tom|
| 40| 40|Linda|
+---+--------------+-----+