我需要能够使用Pyspark获得列的最通用值。
在此示例中,从Day
列开始,我想获得的结果是Monday
,因为它看起来比Tuesday
和Wednesday
多。
Row 1: Monday
Row 2: Tuesday
Row 3: Wednesday
Row 4: Monday
我以为我必须进行某种分组和计数,但是本应完成项目的整个过程对我来说很奇怪。
这是我尝试解决此问题的示例代码。
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的新手,所以解释越多越好。我已经阅读了文档,但是很难理解。谢谢。
考虑您的数据框名称为'd',而所需的列为'Day',那么您应该这样做:
Day_count = d.groupby('Day').count()
Day_count.orderBy(desc('count')).take(1)
此代码将为您提供'Day'列的模式及其出现时间。