如何根据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个数据帧?的主要内容,如果未能解决你的问题,请参考以下文章