【问题标题】:How filter dataframe by groupby second column in PySpark如何在 PySpark 中按 groupby 第二列过滤数据帧
【发布时间】:2022-01-07 00:47:19
【问题描述】:

我有一个包含“家庭、人、标志”列的 df,并且希望将数据框过滤到至少包含一个标志的家庭。我理解逻辑,但不知道如何编码,有人可以帮忙吗?对于下面的示例,输出将删除家庭 2。

逻辑: df = df.filter(all rows in households where at least one row in that household contains 'flag'==1)

Example dataframe:
| Household| Person|flag|
| -------- | ----- | -- |
| 1        | Oliver|    |
| 1        | Jonny | 1  | 
| 2        | David |    |
| 2        | Mary  |    |
| 3        | Lizzie|    |
| 3        | Peter | 1  |

【问题讨论】:

    标签: pyspark filter group-by apache-spark-sql aggregate


    【解决方案1】:

    过滤和groupBy 得到所需的Household 并进行内部连接以获得最终的结果。

    df.join(df.filter("flag = '1'").select('Household').distinct(), ['Household'], 'inner').show()
    
    +---------+------+----+
    |Household|Person|flag|
    +---------+------+----+
    |        1|Oliver|null|
    |        1| Jonny|   1|
    |        3|Lizzie|null|
    |        3| Peter|   1|
    +---------+------+----+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-21
      • 2017-03-16
      • 2021-04-10
      • 2022-09-30
      • 2012-08-13
      • 2017-10-21
      • 2019-03-07
      相关资源
      最近更新 更多