当我尝试用空值填充数据帧以替换其中的其他值时,我收到错误Caused by: scala.MatchError: Null (of class scala.reflect.internal.Types$ClassNoArgsTypeRef)
。如何使用 Scala Spark 2.1 执行此操作?
您可以使用
isin
和when
。所需导入:
import org.apache.spark.sql.functions.when
示例数据:
val toReplace = Seq("foo", "bar")
val df = Seq((1, "Jane"), (2, "foo"), (3, "John"), (4, "bar")).toDF("id", "name")
查询:
df.withColumn("name", when(!$"name".isin(toReplace: _*), $"name")).
结果是:
+---+----+
| id|name|
+---+----+
| 1|Jane|
| 2|null|
| 3|John|
| 4|null|
+---+----+