pyspark对多个列执行条件并返回新列

pu82cl6c  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(421)

我使用的是spark2.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()

没有工作我得到的名字还没有定义
请帮助我跨过这个障碍

biswetbf

biswetbf1#

试试下面的方法,应该可以

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

相关问题