python - pyspark 多列条件并返回新列

标签 python hadoop apache-spark pyspark

我使用的是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/

相关文章:

python - 如何根据 python 上的 tkinter 中的用户输入生成弹出消息?

python - 生成转移矩阵

linux - 使用 Ansible 下载 hadoop-3.2.2.tar.gz 文件后出现校验和错误

hadoop map-reduce : how to deploy non-jar files

apache-spark - PySpark:带有标量 Pandas UDF 的无效返回类型

apache-spark - k8上​​的Spark无法通过ECK进行身份验证

python - 如何将标准输入数据作为输入输入到 spark 脚本

python - 添加到布局的 PyQt4 自定义小部件(已加载 uic)是不可见的

python - 如何在两个一起工作的脚本完成后自动启动脚本?

java - 将 Hadoop MapReduce 输出写入 2 个平面文件