首页 > 解决方案 > PySpark:如何计算两列中不同值的数量?

问题描述

我有一个包含两列的 DataFrame,id1, id2我想要得到的是计算这两列的不同值的数量。本质上这是count(set(id1+id2)).

我怎么能用 PySpark 做到这一点?

谢谢!

请注意,这不是重复的,因为我希望 PySpark 计算count(). 当然可以获取这两个列表id1_distinct并将id2_distinct它们放入 a 中,set()但在我看来,在处理大数据时这不是正确的解决方案,而且它并不真正符合 PySpark 精神

标签: pyspark

解决方案


您可以使用 将两列合并为一列union,并获得countDistinct

import pyspark.sql.functions as F

cnt = df.select('id1').union(df.select('id2')).select(F.countDistinct('id1')).head()[0]

推荐阅读