如何根据2列比较PySpark中的2个数据帧?

时间:2018-02-28 11:48:25

标签: python-3.x apache-spark pyspark

在PySpark中,我试图比较两个常见列的数据帧。 Tha数据帧看起来像这样:

function onLoad(){
    window.location = 'page1.html?pageName=page3.html&time=2000'
}

想法是检查df1是否包含子字符串为df2的行。如果是这样,请获取这些行。上面的结果将是:

df1   ...   ...
aa1   ...   ...
bb2   ...   ...
ab3   ...   ...
cc4   ...   ...

df2   ...   ...
a1    ...   ...
b3    ...   ...

或伪代码:

result
aa1
ab3

提前致谢!

1 个答案:

答案 0 :(得分:0)

您需要leftsemi加入。

语法将为df1.join(df2, how='leftsemi', on="join condition")

from pyspark.sql import functions as F

df1.show()
+---+
|  a|
+---+
|aa1|
|bb2|
|ab3|
|cc4|
+---+

df2.show()
+---+
|  b|
+---+
| a1|
| b3|
+---+

df1.join(F.broadcast(df2), how='leftsemi', on=F.col('a').endswith(F.col('b'))).show()
+---+
|  a|
+---+
|aa1|
|ab3|
+---+