我正在使用spark 2.1,脚本是pyspark。因为我被困在这里,请帮助我。

问题陈述:根据多个列上的条件创建新列

输入dataframe在下面

FLG1 FLG2 FLG3

T     F     T

F     T     T

T     T     F

现在,我需要创建一个作为FLG的新列,而我的情况就好像FLG1==T&&(FLG2==F||FLG2==T)我的FLG必须是T否则是F
上面的dataframe视为DF
以下是我尝试过的代码段
DF.withColumn("FLG",DF.select(when(FLG1=='T' and (FLG2=='F' or FLG2=='T','F').otherwise('T'))).show()

没有定义我的名字时没有工作

请帮助我克服这个障碍

最佳答案

尝试以下方法,它应该可以工作

from pyspark.sql.functions import col, when, lit
DF.withColumn("FLG", when((col("FLG1")=='T') & ((col("FLG2")=='F') | (col("FLG2")=='T')),lit('F')).otherwise(lit('T'))).show()

08-28 04:33