TL; DR
要传递多个条件
filter或
where使用
Column对象和逻辑运算符(
&,
|,
~)。请参见Pyspark:when子句中的多个条件。
df.filter((col("act_date") >= "2016-10-01") & (col("act_date") <= "2017-04-01"))
您还可以使用 单个 SQL字符串:
df.filter("act_date >='2016-10-01' AND act_date <='2017-04-01'")
实际上,在以下两者之间使用更有意义:
df.filter(col("act_date").between("2016-10-01", "2017-04-01"))df.filter("act_date BETWEEN '2016-10-01' AND '2017-04-01'")
第一种方法甚至不是远程有效的。在Python中,
and返回:
- 如果所有表达式都是“真话”,则为最后一个元素。
- 否则,第一个“ falsey”元素。
结果是
"act_date <='2017-04-01'" and "act_date >='2016-10-01'"
评估为(任何非空字符串为真):
"act_date >='2016-10-01'"
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)