多列上的pyspark条件并返回新列

时间:2017-08-23 16:44:35

标签: python hadoop apache-spark pyspark

我正在使用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()

没有工作我在没有定义的时候得名字

请帮助我渡过这个障碍

1 个答案:

答案 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()