этот ответ

я есть следующие данные в фрейме данных 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, верно?