[英]Add a column value based on selection of a subset of rows
我有一个如下所示的 dataframe,它是从 impala 表中读取的。 我正在尝试添加基于 sql 查询的列。 例如,我想添加一个新列ConditionAB
,这个查询select * from df where ConditionA = Y and ConditionB = N
,对于结果中的行, ConditionAB
列值应该是 Y,并且 rest 中的行df 应该具有值 N(参见示例 output )。 你能帮忙解释一下吗? 我有几个 sql 查询作为条件,并希望有一个 df 作为结果。 任何方法,即 Pyspark api 或 Spark sql 都可以,最好是 ZAC5C74B64B4B832AZFB5.AFAC 谢谢你。
输入:
customerNo ConditionA ConditionB ConditionC ConditionD
1 Y Y Y N
2 N N Y Y
3 Y Y N N
4 Y N Y Y
5 Y N Y Y
output:
customerNo ConditionA ConditionB ConditionC ConditionD. ConditionAB
1 Y Y Y N N
2 N N Y Y N
3 Y Y N N N
4 Y N Y Y Y
5 Y N Y Y Y
尝试以下代码片段,它是使用 Scala 实现的,您可以对 python 重复使用相同的逻辑
import org.apache.spark.sql.functions._
df
.withColumn("ConditionAB", when(col("ConditionA") === "Y" && col("ConditionB") === "N"), "Y").otherwise("N"))
从@Sivakumar 的回答中得到提示,在 pyspark 中你可以写
import pyspark.sql.functions as F
df = df.withColumn('ConditionAB', F.when((F.col('ConditionA') == 'Y') & (F.col('ConditionB') == 'N'), 'Y').otherwise('N'))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.