dhe*_*eee 27 apache-spark apache-spark-sql spark-dataframe
我有一个包含四个字段的数据框.其中一个字段名称是Status,我试图在.filter中使用OR条件来表示数据帧.我试过下面的查询,但没有运气.
df2 = df1.filter(("Status=2") || ("Status =3"))
df2 = df1.filter("Status=2" || "Status =3")
Run Code Online (Sandbox Code Playgroud)
有没有人以前用过这个.我在这里看到了关于堆栈溢出的类似问题.他们使用下面的代码来使用OR条件.但该代码适用于pyspark.
from pyspark.sql.functions import col
numeric_filtered = df.where(
(col('LOW') != 'null') |
(col('NORMAL') != 'null') |
(col('HIGH') != 'null'))
numeric_filtered.show()
Run Code Online (Sandbox Code Playgroud)
Dav*_*fin 40
代替:
df2 = df1.filter("Status=2" || "Status =3")
Run Code Online (Sandbox Code Playgroud)
尝试:
df2 = df1.filter($"Status" === 2 || $"Status" === 3)
Run Code Online (Sandbox Code Playgroud)
已经回答了这个问题,但是为了将来参考,我想提到,在这个问题的上下文中,Dataset / Dataframe中的where
and filter
方法支持两种语法:SQL字符串参数:
df2 = df1.filter(("Status = 2 or Status = 3"))
Run Code Online (Sandbox Code Playgroud)
和基于Col的参数(由@David提及):
df2 = df1.filter($"Status" === 2 || $"Status" === 3)
Run Code Online (Sandbox Code Playgroud)
看来OP结合了这两种语法。就个人而言,我更喜欢第一种语法,因为它更简洁,更通用。
归档时间: |
|
查看次数: |
81600 次 |
最近记录: |