2016-11-24 42 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

相关问题