根据包含列表元素的列值创建布尔标志

时间:2018-11-14 16:37:06

标签: scala apache-spark dataframe dataset conditional-statements

def myFunction(df: DataFrame): DataFrame = {
    val myList= List("a","b","c")

    df
      .withColumn("myFlag",
        if (myList.contains(df.select(col("columnName1")))) lit("true") else lit(false))
}

我想编写一个函数,该函数接受一个Dataframe,并向其中添加一个名为“ myFlag”的列。

如果相应的“ columnName1”的值是“ myList”的元素,我希望“ myFlag”为 true ,否则为 false

为简单起见,“ columnName1”值和“ myList”仅包含字符串。

我上面的功能不起作用。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这可以使用isin上定义的Column来完成:

df
  .withColumn("myFlag",$"columnName1".isin(myList:_*))