我有 2 个 pyspark 数据框,我正在尝试加入其中列中的某些值带有括号的位置。例如,其中一个值是
"Mangy (Dog)"
如果我尝试像这样加入:
df1.join(df2 expr("df1.animal rlike df2.animal_stat")
我没有得到任何结果。所以我尝试使用过滤rlike
来查看我是否能够捕获这些值。
过滤适用于除带括号的值之外的所有值。例如,当我尝试像这样过滤时:
df.filter(col('animal').rlike("Mangy (Dog)")).show()
我没有得到任何结果。
但是,如果我过滤rlike("Mangy")
或rlike("(Dog)"
它似乎工作。即使我在(Dog)
.
有没有办法让 rlike 在其匹配项中包含括号?
编辑:
我有 2 个数据框df1
,df2
就像这样:
+-----------------+-------+
| animal| origin|
+-----------------+-------+
| mangy (dog)|Streets|
| Cat| house|
|[Bumbling] Bufoon| Utopia|
| Cheetah| Congo|
|(Sprawling) Snake| Amazon|
+-----------------+-------+
+-------------------+-----------+
| animal_stat|destination|
+-------------------+-----------+
| ^dog$| House|
| ^Cat$| Streets|
|^[Bumbling] Bufoon$| Circus|
| ^Cheetah$| Zoo|
| ^(Sprawling)$| Glass Box|
+-------------------+-----------+
我正在尝试rlike
使用以下方法加入两者:
dff1=df1.alias('dff1')
dff2=df2.alias('dff2')
combine=dff1.join(dff2, expr("dff1.animal rlike dff2.animal_stat"), how='left')
.drop(dff2.animal_stat)
我希望输出数据框是这样的:
+-----------------+-------+-----------+
| animal| origin|destination|
+-----------------+-------+-----------+
| mangy (dog)|Streets| House|
| Cat| house| Streets|
|[Bumbling] Bufoon| Utopia| Circus|
| Cheetah| Congo| Zoo|
|(Sprawling) Snake| Amazon| Glass Box|
+-----------------+-------+-----------+