Pyspark:获取列的最常用值?

问题描述 投票:0回答:1

我需要能够使用Pyspark获得列的最通用值。

在此示例中,从Day列开始,我想获得的结果是Monday,因为它看起来比TuesdayWednesday多。

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的新手,所以解释越多越好。我已经阅读了文档,但是很难理解。谢谢。

python pyspark rdd pyspark-sql putty
1个回答
0
投票

考虑您的数据框名称为'd',而所需的列为'Day',那么您应该这样做:

Day_count = d.groupby('Day').count()
Day_count.orderBy(desc('count')).take(1)

此代码将为您提供'Day'列的模式及其出现时间。

© www.soinside.com 2019 - 2024. All rights reserved.