pyspark - PySpark - 如果 ID 存在于表 1 和表 2 中,则使用 TRUE 填充表 1 中的列,否则为 FALSE
问题描述
我的目标是在 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。我想填写 ID 4 是否在两个表中都存在。最终输出将是这样,参考表 1。
ID TIME EXISTS_BOTH_TABLES
1 1/1/21 FALSE
4 1/1/21 TRUE
7 1/1/21 FALSE
我意识到这可能是一种特殊类型的 Join,但我的斗争也存在于阐明我究竟需要什么。我希望这可以帮助您理解我的问题。
解决方案
我没有测试过下面的代码,但你应该按照以下方式做一些事情:
from pyspark.sql.functions import when
df1.join(df2, 'ID', 'left').withColumn('CONVO', when(df2.ID.isNull(), False).otherwise(True))
在 ID 上左连接并检测 ID 何时不匹配以使用 False 填充 convo 列,否则为 true。
如果你想同时做双方,你可以做一个完全连接,并检测 df1.ID 和 df2.ID 的空值。
编辑:我相信你在你的例子中犯了一个错误,在结果表中,ID 7 应该是 True
推荐阅读
- web - 您可以从网页中获取哪些数据
- html - 表中的引导输入和选择稍微偏离
- python - 向量减法 python 3 不使用内置函数 sum、min、max 和 zip
- c++ - Windows 终端服务器 2012 R2 + 自定义凭据提供程序
- angularjs - 如何在 angularjs 指令的数据绑定值中添加双引号?
- javascript - 将 javascript 导入加载到 React 应用程序中
- c# - SqlDataAdapter.Fill() "=" C# 附近的语法不正确
- python - 同一列的多个副本到新数据框中
- node.js - node.js:如何锁定/同步代码块?
- pic - PIC18f65k40的UART程序