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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何根据2列比较PySpark中的2个数据帧?相关的知识,希望对你有一定的参考价值。

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

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

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

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

result
aa1
ab3

或者在伪代码中:

df1.filter(df1.col.likes(df2.col))

提前致谢!

答案

你需要一个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|
+---+

以上是关于如何根据2列比较PySpark中的2个数据帧?的主要内容,如果未能解决你的问题,请参考以下文章

如何比较来自 PySpark 数据帧的记录

pyspark 数据框比较以根据关键字段查找列差异

pyspark - 将两个数据帧与目标中的额外列合并

Pyspark数据帧:根据另一列的值提取列

如何比较pyspark中两个不同数据帧中的两列

pyspark 内连接的替代方法来比较 pyspark 中的两个数据帧