如何在同一列 pyspark sql 中过滤多个条件

How to filter multiple conditions in same column pyspark sql

我有一列如下:

+-------+------------------+-------+
|   name|             value|user_id|
+-------+------------------+-------+

| user 1|             view |      1|
| user 1|         processed|      1|
| user 2|             view |      3|
| user 3|             view |      4|
+-------+------------------+-------+

我想获得如下列。

+-------+------------------+-------+
|   name|             value|user_id|
+-------+------------------+-------+
| user 2|             view |      3|
| user 3|             view |      4|
+-------+------------------+-------+

简单来说,去掉同时完成这两个动作的id。

目前,我有两个如下所示的数据框

df1 = df.where(value=="processed").select("id").distinct()
df2 = df.where(value=="view").select("id").distinct()

现在,如何只获取只有视图而没有视图的 ID processed.Or 有没有更好的方法来做到这一点?

一个选项可以是 "leftanti" 自连接,以消除所有包含 "processed":

name
result = df.join(df.where(df.value=="processed") \
                   .select("name") \
                   .distinct(),
                 "name", "leftanti")
result.show()
+------+-----+-------+
|  name|value|user_id|
+------+-----+-------+
|user 3| view|      4|
|user 2| view|      3|
+------+-----+-------+