多列上的pyspark条件并返回新列
Posted
技术标签:
【中文标题】多列上的pyspark条件并返回新列【英文标题】:pyspark conditions on multiple columns and returning new column 【发布时间】:2017-08-23 16:44:34 【问题描述】:我使用的是 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
下面是我尝试过的代码sn-p
DF.withColumn("FLG",DF.select(when(FLG1=='T' and (FLG2=='F' or FLG2=='T','F').otherwise('T'))).show()
没有工作我在未定义时得到名字
请帮助我跨过这个障碍
【问题讨论】:
and
和 or
在 pyspark 中不起作用 - 请参阅 issues.apache.org/jira/browse/SPARK-8568
【参考方案1】:
试试下面的,应该可以的
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()
【讨论】:
感谢拉梅什的快速回复。获取不支持的操作数类型 |: 'str' 和 'Dataframe' 可能是什么问题 我很高兴@user3292373 :) 感谢您的支持和接受 如果列正在增加并且条件现在正在增加,Ramesh 会再提供帮助。我需要创建一个在该 udf 中生成一列的 udf 我需要在作为参数传递的列上给出条件 我该怎么做。在传递的参数列上,条件被执行并返回为 true 或 false 。我该怎么做 你可以从***.com/questions/42540169/…得到想法以上是关于多列上的pyspark条件并返回新列的主要内容,如果未能解决你的问题,请参考以下文章
如何在 pyspark 中对 spark 数据框中的多列求和?
如何在 pyspark 中对 spark 数据框中的多列求和?