如何在同一列 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|
+------+-----+-------+
我有一列如下:
+-------+------------------+-------+
| 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|
+------+-----+-------+