在pyspark中是否有任何方法可以从每列中选取任何特定的值

xzlaal3s  于 2022-11-01  发布在  Spark
关注(0)|答案(1)|浏览(178)

我有一个pyspark df,其中包含列ABC,如下所示。

  1. A B C
  2. 1 true false
  3. 1 false true
  4. 2 false false
  5. 2 false true

对于一个特定的主键,如果B在任何行中为true,则最终的DF应该为true。对于列C也是如此。最终的DF对于1个主键将只有1条记录。
我想要的输出df如下所示

  1. A B C
  2. 1 true true
  3. 2 false true

目前我正在尝试为B和AC创建单独的dfs,选择其中B为true而C为true的记录,然后基于主键A创建一个最终的df连接dfs AB和AC。您能建议我在这里可以使用的其他方法吗?

zwghvu4y

zwghvu4y1#

由于True > False,您可以为每个主键取一个max的布尔值(考虑boolean中字段的数据类型)。

  1. data_sdf. \
  2. groupBy('a'). \
  3. agg(func.max('b').alias('b'),
  4. func.max('c').alias('c')
  5. ). \
  6. show()
  7. # +---+-----+----+
  8. # | a| b| c|
  9. # +---+-----+----+
  10. # | 1| true|true|
  11. # | 2|false|true|
  12. # +---+-----+----+
展开查看全部

相关问题