如何在保留具有空值的行的同时删除包含特定值的行?

时间:2019-07-14 14:56:45

标签: scala apache-spark apache-spark-sql

我在Spark Scala中有以下小型演示DataFrame:

Type   Description
0      
1      Action 1
1      Drop: Action 1
2      Action2

我需要在Description列中删除所有包含“ Drop”的行,同时将行保留为空Description

预期结果:

Type   Description
0      
1      Action 1
2      Action2

如果运行下面显示的代码,则会得到此输出(具有空Description的行将被删除)。

Type   Description
1      Action 1
2      Action2

我的代码:

df
  .na.fill("Description", Seq("Error"))
  .filter(!(col("Description").contains("Drop")))
  .select(col("Type"),col("Description"))
  .distinct
  .sort(col("Type").asc)
  .show()

1 个答案:

答案 0 :(得分:1)

您为na.fill提供的参数不正确。如果您查看所使用方法的签名,则:

def fill(value: String, cols: Seq[String]): DataFrame

“第一个参数”是value,它替换了null列,“第二个参数”是list of columns用于替换null。因此,将您的na.fill代码行替换为以下代码将按预期工作:

na.fill("Error", Array("Description"))