在 PySpark 中对多个单词使用 LIKE 运算符
Using LIKE operator for multiple words in PySpark
我在 PySpark
中有一个 DataFrame 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|
+-----+--------------------+-------+
这可以通过多种方式实现,这不是问题。但是,我有兴趣了解如何使用 LIKE
语句来完成此操作。
如果我只对 ID
从 5 开始的那些行感兴趣,它可以像这样轻松完成 -
df=df.where("ID like ('5%')")
我的问题: 如何在 where
子句中添加第二条语句,如 "ID like ('6%')"
和 OR - |
布尔值?我想做如下所示的事情,但是这段代码出错了。因此,简而言之,我如何在此处使用 LIKE and .where
-
来使用多个布尔语句
df=df.where("(ID like ('5%')) | (ID like ('6%'))")
你可以试试
df = df.where('ID like "5%" or ID like "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%'
可能行不通。
使用:
where column_n RLIKE '^xyz|abc'
说明:它将过滤所有以 abc
或 xyz
开头的单词。
这很好用。
对我来说这很有效:
from pyspark.sql.functions import col
df.filter((col("ID").like("5%")) | (col("ID").like("6%")))
我在 PySpark
中有一个 DataFrame 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|
+-----+--------------------+-------+
这可以通过多种方式实现,这不是问题。但是,我有兴趣了解如何使用 LIKE
语句来完成此操作。
如果我只对 ID
从 5 开始的那些行感兴趣,它可以像这样轻松完成 -
df=df.where("ID like ('5%')")
我的问题: 如何在 where
子句中添加第二条语句,如 "ID like ('6%')"
和 OR - |
布尔值?我想做如下所示的事情,但是这段代码出错了。因此,简而言之,我如何在此处使用 LIKE and .where
-
df=df.where("(ID like ('5%')) | (ID like ('6%'))")
你可以试试
df = df.where('ID like "5%" or ID like "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%'
可能行不通。
使用:
where column_n RLIKE '^xyz|abc'
说明:它将过滤所有以 abc
或 xyz
开头的单词。
这很好用。
对我来说这很有效:
from pyspark.sql.functions import col
df.filter((col("ID").like("5%")) | (col("ID").like("6%")))