python - 如何使用来自不同数据帧的条件将列添加到 pyspark 数据帧

标签 python apache-spark pyspark apache-spark-sql

我实际上正在尝试将以下sql转换为pyspark。

   UPDATE table_a a, table_b b
   SET a.flag=1
   WHERE 
   (
    b.NOD=1
    OR
    (b.flag_3=1 AND b.flag_1=0 AND b.testingSold=0)
   ) 
   AND b.uuid=a.uuid

我尝试了以下代码,但它不起作用:

   table_a = table_a.withColumn("flag", F.when((table_b.NOD ==1) | (table_b.flag_3 == 1) & (table_b.flag_1==0) & table_a.uuid == table_b.uuid), F.lit(1))

执行此操作的正确方法是什么?

最佳答案

您可以执行以下操作

from pyspark.sql import functions as F
table_a.join(table_b, table_a.uuid == table_b.uuid).withColumn("flag", F.when((table_b.NOD ==1) | ((table_b.flag_3 == 1) & (table_b.flag_1==0) & (table_b.testingSold == 0),  F.lit(1)))

关于python - 如何使用来自不同数据帧的条件将列添加到 pyspark 数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45822645/

相关文章:

python - 张量板出现两个一维图而不是一个二维图的问题

python - 如何使用 Python 按字母数字顺序按值对字典进行排序?

scala - 如何替换 DataFrame 列中的空值?

performance - Spark 内部结构 - 重新分区是否将所有分区加载到内存中?

python - withColumn 不允许我使用 max() 函数生成新列

python - Pyspark - withColumn 在调用空数据框时不起作用

python - PySpark - 在没有显式 session key 的情况下组合 session 数据/遍历所有行

python - 从 numpy 数组中删除一些元素

python - 干净地退出 python 脚本

scala - Apache Spark - 两个样本 Kolmogorov-Smirnov 测试