我在df
中有一个DataFrame PySpark
,如下图所示-
+-----+--------------------+-------+
| 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%')")
我的问题:如何在"ID like ('6%')"
子句中添加带有OR - |
布尔值的where
之类的第二条语句?我想做如下所示的事情,但是这段代码给出了一个错误。因此,简而言之,如何在此处使用LIKE and .where
来使用多个布尔语句-
df=df.where("(ID like ('5%')) | (ID like ('6%'))")
答案 0 :(得分:2)
您可以尝试
df = df.where('ID like "5%" or ID like "6%"')
答案 1 :(得分:2)
这对我有用
from pyspark.sql import functions as F
df.where(F.col("ID").like('5%') | F.col("ID").like('6%'))
答案 2 :(得分:0)
在pyspark中,SparkSql语法:
DATE_DEFAULT_TIMEZONE_SET('AFRICA/NAIROBI');
$current_time= strtotime("2016-09-02 05:45:00");
$time_ago = strtotime("2018-01-02 05:45:00");
$diff=$current_time-$time_ago;
$minutes=ceil($diff/60/60);
echo "$minutes ago";
$days=ceil($diff/60/60/24);
$days=ceil($diff/60/60/24);
echo "$days ago";
$months = ceil($diff/60/60/24/30);
echo "$days ago";
可能不起作用。
使用:
where column_n like 'xyz%' OR column_n like 'abc%'
说明:它将过滤以where column_n RLIKE '^xyz|abc'
或abc
开头的所有单词。
这很好用。