Pro c альтернатива ранга в PySpark - PullRequest
0 голосов
/ 03 апреля 2020

Я хочу преобразовать приведенный ниже код SAS в PySpark:

SAS:

    proc rank data = INP(where = (col= 1)) 
              out = RESULT groups = 3 descending ;
       var Col1
           Col2
           Col3
           Col4;
       ranks R_Col1 F_Col2 M_Col3 O_Col4 ;
    run ;

Я пытаюсь выполнить вышеуказанное, используя приведенный ниже код PySpark, но получаю ошибку, что объект DataFrame не имеет атрибута 'apply' PySpark:

def grouping(data):
    dec=pd.qcut(data['Col1','Col2','Col3','Col4'],3,labels=False)
    data['ranks']=dec
    return data
RESULT =INP.apply(grouping)

Буду признателен за любую помощь в этом!

Спасибо

1 Ответ

0 голосов
/ 13 апреля 2020

Пробовал следующее решение: -

RESULT = sqlContext.sql(
"""
SELECT  *,
     ntile(3) OVER (order by Col1 desc) AS R_Col1,
     ntile(3) OVER (order by Col2 desc) AS F_Col2,
     ntile(3) OVER (order by Col3 desc) AS M_Col3,
     ntile(3) OVER (order by Col4 desc) AS O_Col4
FROM INP
WHERE col=1
"""
)
...