python Pyspark在条件A上加入,如果不是则在条件B上加入,等等

x7rlezfr  于 2023-03-21  发布在  Python
关注(0)|答案(1)|浏览(116)

表1有10行需要填充缺失数据。表2有100行可能匹配。两个表都有x、y、z列。我想将表2中的一行与表1中的每一行联接起来。
逻辑:首先看看x,y,z是否都匹配。这是最好的情况。如果是这样,就在这一行加入。如果x,y,z不匹配,那么就只尝试x,y。最后,只选择x。
在表2中可以有许多匹配,其中它可以有1个xyz匹配和1个xy匹配。在这种情况下,它应该只匹配xyz。
我是这么想的:
final = when(table1.join((table2,table1[“x”] == table2[“x”])&(table2,table1[“y”] == table2[“y”]),“left”).否则((table2,table1[“x”] == table2[“x”]))
我一直在每行得到多行,这会破坏系统。我需要告诉它,如果找到xyz匹配,就停在那里,不要检查xy匹配。

5gfr0r5j

5gfr0r5j1#

ifelse来检查,也就是什么时候比较,比如说他检查了x,把它放进去了,你问这个单元格里面有没有东西,如果有,那他就停下来,如果没有,那他就继续比较。

相关问题