Dataframe 在PySpark中对多个单词使用LIKE运算符
我在Dataframe 在PySpark中对多个单词使用LIKE运算符,dataframe,pyspark,where,sql-like,Dataframe,Pyspark,Where,Sql Like,我在PySpark中有一个数据帧df,如下所示- +-----+--------------------+-------+ | ID| customers|country| +-----+--------------------+-------+ |56 |xyz Limited |U.K. | |66 |ABC Limited |U.K. | |16 |Sons & Sons |U.K. |
PySpark
中有一个数据帧df
,如下所示-
+-----+--------------------+-------+
| ID| customers|country|
+-----+--------------------+-------+
|56 |xyz Limited |U.K. |
|66 |ABC Limited |U.K. |
|16 |Sons & Sons |U.K. |
|51 |TÜV GmbH |Germany|
|23 |Mueller GmbH |Germany|
|97 |Schneider AG |Germany|
|69 |Sahm UG |Austria|
+-----+--------------------+-------+
我只想保留ID
从5或6开始的行。所以,我希望我的最终数据帧看起来像这样-
+-----+--------------------+-------+
| ID| customers|country|
+-----+--------------------+-------+
|56 |xyz Limited |U.K. |
|66 |ABC Limited |U.K. |
|51 |TÜV GmbH |Germany|
|69 |Sahm UG |Austria|
+-----+--------------------+-------+
df=df.where("ID like ('5%')")
这可以通过多种方式实现,这不是问题。但是,我有兴趣学习如何使用LIKE
语句来实现这一点
如果我只对ID
从5开始的那些行感兴趣,那么就可以像这样轻松地完成-
+-----+--------------------+-------+
| ID| customers|country|
+-----+--------------------+-------+
|56 |xyz Limited |U.K. |
|66 |ABC Limited |U.K. |
|51 |TÜV GmbH |Germany|
|69 |Sahm UG |Austria|
+-----+--------------------+-------+
df=df.where("ID like ('5%')")
我的问题:如何在where
子句中添加第二个语句,如“ID like('6%”)
,和或-
布尔值?我想做如下所示的事情,但这段代码给出了一个错误。所以,简而言之,我如何使用多个布尔语句,使用像and.where
-
df=df.where("(ID like ('5%')) | (ID like ('6%'))")
你可以试试
df=df.where('ID像“5%”或ID像“6%”)
这对我来说很有用
from pyspark.sql import functions as F
df.where(F.col("ID").like('5%') | F.col("ID").like('6%'))
在pyspark中,SparkSql语法:
where column_n like 'xyz%' OR column_n like 'abc%'
可能不行
使用:
说明:它将过滤所有以abc
或xyz
开头的单词
这个很好用。非常感谢你的品脱。你能告诉我为什么用“替换”来做这个把戏吗?这个把戏是使用或代替|。替换“没有任何影响。哦,我认为我们必须在PySpark中使用管道|,并且不允许使用或。惊讶。PySpark where语句既支持数据帧操作,也支持sql查询。你(甚至我)也支持的那个使用的是where中的sql。所以,这里支持or语句。Mike建议使用dataframe操作,而您不能使用or。我也认为这可能与sql类型语法有关,而不是dataframe one。非常感谢。非常有帮助。嗨,“like”对我来说也非常有效,代码也没有“没有中断。因此,我将继续使用它。谢谢您的评论。@cph\u sto:是的,它可能适用于少数情况,但适用于使用变量替换的情况,例如,列\u m='(某些变量)s'。如果将like运算符与%一起使用,那么它将中断代码,因为python将与%