Pyspark: получить наиболее распространенное значение столбца? - PullRequest
0 голосов
/ 01 декабря 2019

Мне нужно иметь возможность получить наиболее распространенное значение столбца с помощью 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, поэтому чем больше объяснений, тем лучше. Я прочитал документацию, но мне было трудно понять это. Спасибо.

1 Ответ

0 голосов
/ 02 декабря 2019

считайте имя вашего фрейма данных 'd', а желаемый столбец - 'Day', тогда вы должны сделать следующее:

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

Этот код даст вам режим вашего столбца 'Day' с его появлениемвремя.

...