繁体   English   中英

根据选择的行子集添加列值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM