этот ответ
я есть следующие данные в фрейме данных pyspark под названиемend_stats_df
:
values start end cat1 cat2
10 1 2 A B
11 1 2 C B
12 1 2 D B
510 1 2 D C
550 1 2 C B
500 1 2 A B
80 1 3 A B
И я хочу агрегировать это следующим образом:
Я хочу использовать столбцы «начало» и «конец» в качестве совокупных ключейДля каждой группы строк мне нужно сделать следующее:вычислить уникальное количество значений в обоихcat1
а такжеcat2
для этой группы. например, для группыstart
= 1 иend
= 2, это число будет 4, потому что есть A, B, C, D. Это число будет сохранено какn
(n = 4 в этом примере).дляvalues
поле, для каждой группы мне нужно отсортироватьvalues
, а затем выберите каждыйn-1
значение, гдеn
значение, сохраненное в первой операции вышев конце агрегации мне все равно, что вcat1
а такжеcat2
после операции выше.Пример вывода из приведенного выше примера:
values start end cat1 cat2
12 1 2 D B
550 1 2 C B
80 1 3 A B
Как выполнить использование фреймов данных pyspark? Я предполагаю, что мне нужно использовать пользовательский UDAF, верно?