pySpark数据框过滤方法

pySpark dataframe filter method

我使用 Databricks runtime 6.3 并使用 pySpark。我有一个数据框 df_1。 SalesVolume 是一个整数,但 AveragePrice 是一个字符串。

当我执行下面的代码时,代码运行并且我得到了正确的输出。

display(df_1.filter('SalesVolume>10000 and AveragePrice>70000'))

但是,下面的代码最终出错了; "py4j.Py4JException: Method and([class java.lang.Integer]) does not exist"

display(df_1.filter(df_1['SalesVolume']>10000 & df_1['AveragePrice']>7000))

为什么第一个有效而第二个无效?

你必须用 () 包裹你的条件

display(df_1.filter((df_1['SalesVolume']>10000) & (df_1['AveragePrice']>7000)))

过滤器接受 SQL 类语法或数据帧类语法,第一个有效,因为它是有效的 sql 类语法。但第二个不是。