根据另一个数据帧过滤 pyspark 数据帧
Posted
技术标签:
【中文标题】根据另一个数据帧过滤 pyspark 数据帧【英文标题】:Filter pyspark dataframe based on another dataframe 【发布时间】:2020-12-30 06:49:56 【问题描述】:我需要帮助,因为我想从一个数据帧中过滤一些数据作为另一个数据帧的标准,但我不想使用 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
【问题讨论】:
【参考方案1】:您可以先将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|
+---+----------+------+-----+
【讨论】:
以上是关于根据另一个数据帧过滤 pyspark 数据帧的主要内容,如果未能解决你的问题,请参考以下文章