根据多个条件删除 PySpark 数据框中的行

mar*_*mos 3 python dataframe pyspark

我有一个结构类似于以下内容的数据框:

col1, col2, col3, col4
A,A,A,A
A,B,C,D
B,C,A,D
A,C,A,D
A,F,A,A
A,V,B,A
Run Code Online (Sandbox Code Playgroud)

我想要的是“删除”同时满足所有列条件的行。例如,同时删除col1 == Acol2 == C。请注意,在这种情况下,唯一应该删除的行是"A,C,A,D"唯一同时满足两个条件的行。因此,数据框应该如下所示:

col1, col2, col3, col4
A,A,A,A
A,B,C,D
B,C,A,D
A,F,A,A
A,V,B,A
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试过的是:

# spark library import
import pyspark.sql.functions as F

df = df.filter(
               ((F.col("col1") != "A") & (F.col("col2") != "C"))
               )
Run Code Online (Sandbox Code Playgroud)

这个并没有按照我想要的方式进行过滤,因为它删除了仅满足一个条件的所有行,例如col1 == "A"or col2 == "C",返回:

col1, col2, col3, col4
B,C,A,D
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗?

谢谢

mck*_*mck 5

结合这两个条件并执行NOT

cond = (F.col('col1') == 'A') & (F.col('col2') == 'C')

df.filter(~cond)
Run Code Online (Sandbox Code Playgroud)