首页 > 解决方案 > 数据框过滤掉包含指定单词的行(字符串)

问题描述

这是我在 Scala 中的问题。我有一个数据框,其中一列的数据类型为字符串。例如,该列有 4 个值

"Abc", "dfea", "skjod", "aaa"

还有一个

List = ["ab", "kj"]

我需要过滤掉列表中包含任何值的行。所以,对于上面的数据,我会得到第二行和第四行。

这是我的代码:

val del_blk = (arg: String) => {
  for (word <- list) {
    if (arg.contains(word)) 1
  }
  0
} 
val blkUDF = udf(del_blk)
df
.withColumn("blk", blkUDF(col("col")))
.filter(col("blk") === 0)
.select("col")
.show()

标签: scala

解决方案


val del_blk = (arg: String) => {
  for (word <- list) {
    if (arg.contains(word)) 1
  }
  0
}

相当于

val del_blk = (arg: String) => {
  list.foreach(word => if (arg.contains(word)) 1)
  0
}

我怀疑你宁愿打算像

def containsForbiddenWord(word: String): Boolean =
  list.exists(forbidden => word.contains(forbidden))

推荐阅读