我正在使用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()
没有工作我在没有定义的时候得名字
请帮助我渡过这个障碍
答案 0 :(得分:3)
尝试以下操作,它应该可以正常工作
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()