[英]Pyspark: Get the amount of distinct combinations between two columns
我需要能够在两个单独的列中获得不同组合的数量。
在这个来自“动物”和“颜色”列的示例中,我想要得到的结果是 3,因为出现了三种不同的列组合。 基本上,Animal 或 Color 在不同的行中可以相同,但如果两行具有相同的 Animal AND Color,则应从该计数中省略。
Animal | Color
Dog | Brown
Dog | White
Cat | Black
Dog | White
我知道您可以将数据添加到一个集合中,这将消除重复项,但我似乎无法让它与多个变量一起使用。
这是我试图解决这个问题的示例代码。
d = d.rdd
d = d.map(lambda row: (row.day.year, row.number))
print(d.take(2000))
d_maxNum = d.reduceByKey(lambda max_num, this_num: this_num if this_num > max_num else max_num)
print(d_maxNum.collect())
Pyspark 有您可以使用的dropDuplicates
方法参考。
df = sc.parallelize([Row(Animal='Dog', Color='White'), Row(Animal='Dog', Color='Black'), Row(Animal='Dog', Color='White'), Row(Animal='Cat', Color='White')]).toDF()
df.dropDuplicates(['Animal', 'Color']).count()
这将使输出为 3。
您可以使用distinct
功能。
##Perform distinct on entire dataframe.
df.distinct().show()
##Perform distinct on certain columns of dataframe
df.select('Animal','Color').distinct().show()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.