我有一个带有4列(C1,C2,C3和C4)的pySpark数据框。在第三列(C3)中,我具有分类值,例如V1,V2,V3;在第四列(C4)中,我具有其相应的数值。我正在尝试添加其他列V1,V2和V3,其中这些新列的值应来自第四列(C4)的对应行

我可以通过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


我以某种方式无法发布数据的表格格式,但我认为它很容易可视化。

一些建议将不胜感激

最佳答案

您可以尝试pivot()您的DataFrame

from pyspark.sql.functions import expr

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


您需要功能coalescenull替换缺少的值。

关于python - 用pySpark中第二列的值对行进行转置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40792086/

10-12 20:23