我使用Databricks运行时6.3并使用pySpark。我有一个数据框df_1。 SalesVolume是一个整数,而AveragePrice是一个字符串。
当我执行以下代码时,代码将运行并获得正确的输出。
display(df_1.filter('SalesVolume>10000 and AveragePrice>70000'))
但是,下面的代码最终会出错; “ py4j.Py4JException:方法and([[class java.lang.Integer])不存在”
display(df_1.filter(df_1['SalesVolume']>10000 & df_1['AveragePrice']>7000))
为什么第一个有效,但第二个无效?
答案 0 :(得分:2)
您必须将条件包装在()
中display(df_1.filter((df_1['SalesVolume']>10000) & (df_1['AveragePrice']>7000)))
过滤器接受类似SQL的语法或类似于数据帧的语法,第一种有效,因为它是有效的类似SQL的语法。但是第二个不是。