我使用的是spark 2.1,脚本是pyspark。请帮我解决这个问题,因为我被困在这里。
问题陈述:根据多列的条件创建新列
输入数据框
如下
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()
关于python - pyspark 多列条件并返回新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45845238/