我需要帮助,因为我想从一个数据框中过滤一些数据作为另一个数据框的标准,但我不想使用 SQL 命令。
df1
id ; create ; change ; name
1 ;2020-12-01;;Paul
2 ;2020-12-02;;Mary
3 ;2020-12-03;;David
4 ;2020-12-04;;Marley
df2
id ; create ; change ; name
1 ;2020-12-01;2020-12-30;Paul
2 ;2020-12-02;;Mary
3 ;2020-12-03;;David
4 ;2020-12-04;2020-12-30;Marley
5 ;2020-12-30;;Ted
df3
我想使用以下规则创建 df3 数据框,其中包含更改的 id (df2) 预填充日期为 2020-12-30 并存在 在 df1 中不插入 df3
id ; create ; change ; name
2 ;2020-12-02;;Mary
3 ;2020-12-03;;David
答案 0 :(得分:2)
您可以先将 df2
与 df1
进行半连接,然后过滤 change
列。
df3 = df2.join(df1, ['id', 'create', 'name'], 'semi') \
.filter("change is null or change != '2020-12-30'") \
.select('id', 'create', 'change', 'name')
df3.show()
+---+----------+------+-----+
| id| create|change| name|
+---+----------+------+-----+
| 2|2020-12-02| null| Mary|
| 3|2020-12-03| null|David|
+---+----------+------+-----+