2016-11-24 193 views
1

我有一個pySpark數據框有4列(C1,C2,C3和C4)。在第三列(C3)中,我有分類值,如V1,V2,V3,在第四列(C4)中我有相應的數值。我試圖添加額外的列V1,V2和V3,其中這些新列的值應來自第四列(C4)的相應行。pySpark中第二列值的行轉置

我能夠通過UDFDF.withColumn將行轉置爲列,但無法將值

def valTocat(C3): 
if C3 == 'xyz': 
    return 1 
else: 
    return 0 

但下面不工作

def valTocat((C3, C4)): 
if C3 == 'xyz': 
    return C4 
else: 
    return 0 

不知怎的,我無法發佈數據的表格格式,但我認爲這是很容易想象。

一些建議會非常感激

回答

2

您可以嘗試pivot()DataFrame

from pyspark.sql.functions import expr 

df.groupBy("c1","c2") \ 
.pivot("c3") \ 
.agg(expr("coalesce(first(c4))")).show() 

您需要的功能​​3210用null替代缺失的數值。

+0

這工作,謝謝! – CARTman

相關問題