如何在pyspark中使用两列作为单个条件来获得结果



我有:

+-----------+------+
|ColA       |ColB  |
+-----------+------+
|       A   |     B|
|       A   |     D|
|       C   |     U|
|       B   |     B|
|       A   |     B|
+-----------+------+

,我想得到:

+-----------+------+
|ColA       |ColB  |
+-----------+------+
|       A   |     D|
|       C   |     U|
|       B   |     B|
+-----------+------+

我想删除"colA == A"one_answers"colB == B"组合的所有行。当我尝试这个SQL语句

SELECT * FROM table where (colA != 'A' and colB != 'B')

工作得很好。

但是当我试图翻译成spark(甚至是pandas)时,我得到了一个错误。

Py4JError:调用o109.and时发生错误。跟踪:…

#spark
sparkDF.where((sparkDF['colA'] != 'A' & sparkDF['colB'] != 'B')).show() 
#pandas
pandasDF[(pandasDF["colA"]!="A" & pandasDF["colB"]!="B")]

我在这里做错了什么?

需要为位或添加括号和|:

pandasDF[(pandasDF["colA"]!="A") | (pandasDF["colB"]!="B")]
sparkDF.where((sparkDF['colA'] != 'A') | (sparkDF['colB'] != 'B')).show() 

最新更新