2017-05-25 25 views
0

假設我有一個數字列Age的數據框。如何在pyspark進行年齡綁定?

我想年齡以基於值的新列

事情是這樣的:

Age  | New Age Range 
----------------------------------- 
    4  |  0-18 
    25  |  19-65 
    90  |  65+ 
    ....  |  .... 

我想用一個函數的...

def AgeByRange(Age): 
    for i in Age: 
    if i < 19: 
     return '0-18' 
    elif ...... 

卜我懷疑有更好的方法來做到這一點。

回答

0

嗨,你可以簡單地用範圍創建數據框,並使用加入,例如

from pyspark.sql.types import * 
df = sqlctx.createDataFrame([(1),(25),(90)],IntegerType()).withColumnRenamed('value','age') 

df2 = sqlctx.createDataFrame([(0,18,'0-18'),(19,65,'19-65'),(65,99999,'65+')],['age_f','age_to','range']) 

df_joined =df.join(df2,(df.age>= df2.age_f) & (df.age<=df2.age_to),'inner').select(df.age,df2.range).show() 
+0

改變了加入略微但這種偉大的工作:) –