【问题标题】:Filter pyspark dataframe based on another dataframe根据另一个数据帧过滤 pyspark 数据帧
【发布时间】: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

【问题讨论】:

    标签: amazon-web-services apache-spark pyspark apache-spark-sql


    【解决方案1】:

    您可以先将df2df1 进行半联接,然后过滤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|
    +---+----------+------+-----+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-24
      • 2021-08-18
      • 1970-01-01
      • 1970-01-01
      • 2017-03-16
      • 2021-04-10
      相关资源
      最近更新 更多