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

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

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

A  B     C
1 true  false 
1 false true 
2 false false 
2 false true

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

A  B     C
1 true  true
2 false true

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

zwghvu4y

zwghvu4y1#

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

data_sdf. \
    groupBy('a'). \
    agg(func.max('b').alias('b'),
        func.max('c').alias('c')
        ). \
    show()

# +---+-----+----+

# |  a|    b|   c|

# +---+-----+----+

# |  1| true|true|

# |  2|false|true|

# +---+-----+----+

相关问题