PySpark-如果表1中存在ID&;表2,用TRUE else FALSE填充表1中的列
我的目标是在ID上将两个表合并在一起。表2中的一些表没有表1中的所有ID,这没关系-在这种情况下,我想根据两个表中是否存在ID,用真值或假值填充第三列 让我试着把我的问题说清楚 假设我有两张桌子:PySpark-如果表1中存在ID&;表2,用TRUE else FALSE填充表1中的列,pyspark,Pyspark,我的目标是在ID上将两个表合并在一起。表2中的一些表没有表1中的所有ID,这没关系-在这种情况下,我想根据两个表中是否存在ID,用真值或假值填充第三列 让我试着把我的问题说清楚 假设我有两张桌子: ID TIME ID TIME 1 1/1/21 2 1/1/21 4 1/1/21 4 1/1/21 7 1/1/21 8 1/1/21 时间表并不重要,重要的是ID 4。我想在ID4中填写这两个表中是否存在。最后的输出是这样
ID TIME ID TIME
1 1/1/21 2 1/1/21
4 1/1/21 4 1/1/21
7 1/1/21 8 1/1/21
时间表并不重要,重要的是ID 4。我想在ID4中填写这两个表中是否存在。最后的输出是这样的,参考表1
ID TIME EXISTS_BOTH_TABLES
1 1/1/21 FALSE
4 1/1/21 TRUE
7 1/1/21 FALSE
我意识到这可能是一种特殊类型的连接,但我的斗争也存在于阐明我到底需要什么。我希望这有助于您理解我的问题。我还没有测试以下代码,但您应该按照以下思路做一些事情:
from pyspark.sql.functions import when
df1.join(df2, 'ID', 'left').withColumn('CONVO', when(df2.ID.isNull(), False).otherwise(True))
在ID上左键连接,并在ID不匹配时进行检测,以将CONVA列填充为False,否则为true
如果您想同时执行这两个操作,可以执行完全联接,并检测df1.ID和df2.ID的空值
编辑:我相信您在示例中犯了一个错误,在结果表中,ID 7应该为TrueCONVA列来自何处?如何计算?根据ID是否在两列中,用真/假填充新列非常感谢您的回答。不幸的是,我没能让它工作。