在 PySpark 中对多个单词使用 LIKE 运算符

cph*_*sto 6 where-clause dataframe sql-like pyspark

我有一个 DataFrame dfPySpark如下所示 -

\n\n
+-----+--------------------+-------+\n|   ID|           customers|country|\n+-----+--------------------+-------+\n|56   |xyz Limited         |U.K.   |\n|66   |ABC  Limited        |U.K.   |\n|16   |Sons & Sons         |U.K.   |\n|51   |T\xc3\x9cV GmbH            |Germany|\n|23   |Mueller GmbH        |Germany|\n|97   |Schneider AG        |Germany|\n|69   |Sahm UG             |Austria|\n+-----+--------------------+-------+\n
Run Code Online (Sandbox Code Playgroud)\n\n

我只想保留ID从 5 或 6 开始的那些行。所以,我希望我的最终数据框看起来像这样 -

\n\n
+-----+--------------------+-------+\n|   ID|           customers|country|\n+-----+--------------------+-------+\n|56   |xyz Limited         |U.K.   |\n|66   |ABC  Limited        |U.K.   |\n|51   |T\xc3\x9cV GmbH            |Germany|\n|69   |Sahm UG             |Austria|\n+-----+--------------------+-------+\n
Run Code Online (Sandbox Code Playgroud)\n\n

这可以通过多种方式实现,而且这不是问题。但是,我有兴趣了解如何使用语句来完成此操作LIKE

\n\n

如果我只对从 5 开始的那些行感兴趣ID,就可以像这样轻松完成 -

\n\n
df=df.where("ID like (\'5%\')")\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的问题:如何添加第二个语句,例如"ID like (\'6%\')"boolean OR - |insidewhere子句?我想做如下所示的事情,但这段代码给出了错误。所以,简而言之,我如何在此处使用多个布尔语句LIKE and .where-

\n\n
df=df.where("(ID like (\'5%\')) | (ID like (\'6%\'))")\n
Run Code Online (Sandbox Code Playgroud)\n

Pin*_*ntu 6

你可以试试

df = df.where('ID like "5%" or ID like "6%"')


Mik*_*ike 6

这对我有用

from pyspark.sql import functions as F
df.where(F.col("ID").like('5%') | F.col("ID").like('6%'))
Run Code Online (Sandbox Code Playgroud)