发布
社区首页 >问答首页 >我可以使用哪种类型的连接?

我可以使用哪种类型的连接?
EN

Stack Overflow用户
提问于 2022-09-21 13:33:52
回答 1查看 30关注 0票数 0

首先,我有以下数据,A和B。下面是我试图输出下面是的结果。

为了总结这个目标,我希望创建一个最终的dataframe:

  1. 我使用df作为基(它有比B更多的列,我想保留)
  2. 如果一个值在A中为零,在B中为一个数字,则我取B。
  3. 如果一个值是两者中的一个数字,我取B。
  4. 如果一个值是A中的一个数字,而在B中为零,则我取A。

有什么建议吗?另外,如果有一种通过SQL查询来执行此操作的方法,那么这也是可行的。

EN

回答 1

Stack Overflow用户

发布于 2022-09-21 16:29:39

建议。这可能是更好的方法,但这应该有效。您需要对所有要对其执行此操作的列执行此操作。

代码语言:javascript
代码运行次数:0
复制
a_df = spark.table('table_a').select(PK, x2, col('Original').alias('A')) #dataframe a
b_df = spark.table('table_b').select(PK, col('Original').alias('B')) #dataframe b

joined_df = a_df.join(b_df, a_df.PK == b_df.PK, 'left') #join a on b

result_df = joined_df.withColumn('Original' , 
when((col('A').isNull() & col('B').isNotNull()), col('B'))\
.when((col('A').isNotNull() & col('B').isNull()), col('A')).otherwise(col('B')))

#If A is Null & B is not Null, then B
#If A is not Null & B is Null, then A
#Otherwise (if both are Null, both are not null) then B
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73801691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档