如何根据给定条件在Dataframe DF中创建新列。我有一个字符串数组,想将其与现有的数据帧进行比较
dataframe DF
+-------------------+-----------+
| DiffColumnName| Datatype|
+-------------------+-----------+
| DEST_COUNTRY_NAME| StringType|
|ORIGIN_COUNTRY_NAME| StringType|
| COUNT|IntegerType|
+-------------------+-----------+
和具有列名的字符串数组(这不是常数,可以更改(
val diffcolarray = Array("ORIGIN_COUNTRY_NAME", "COUNT")
我想在DF中创建一个新列,条件是如果diffcolarray中存在的列也存在于Dataframe的列DiffColumnName中,那么是,否则不是。
我已经尝试了以下选项,但是得到错误
val newdf = df.filter(when(col("DiffColumnName") === df.columns.filter(diffcolarray.contains(_)), "yes").otherwise("no")).as("issue")
val newdf = valdfe.filter(when(col("DiffColumnName") === df.columns.map(diffcolarray.contains(_)), "yes").otherwise("no")).as("issue")
比较时似乎存在数据类型不匹配的情况。输出应该是这样的。任何建议都会有帮助。谢谢
+-------------------+-----------+----------+
| DiffColumnName| Datatype| Issue |
+-------------------+-----------+----------+
| DEST_COUNTRY_NAME| StringType| NO |
|ORIGIN_COUNTRY_NAME| StringType| NO |
| COUNT|IntegerType| YES |
+-------------------+-----------+----------+
这可以为您提供所需的输出。
df.withColumn("Issue",when(col("DiffColumnName").isin(diffcolarray: _*),"YES").otherwise("NO")).show(false)