我有一个包含4列(C1,C2,C3和C4)的pySpark数据帧。在第三列(C3)中,我有分类值,例如V1,V2,V3,在第四列(C4)中,我有相应的数值。我想添加额外的列V1,V2和V3,其中这些新列的值应来自第4列(C4)的相应行
我可以通过UDF
和DF.withColumn
将行转置为列,但无法显示值
def valTocat(C3):
if C3 == 'xyz':
return 1
else:
return 0
但以下内容无效
def valTocat((C3, C4)):
if C3 == 'xyz':
return C4
else:
return 0
不知怎的,我无法发布数据的表格格式,但我认为很容易想象。
一些建议将非常感谢
答案 0 :(得分:2)
您可以尝试pivot()
DataFrame
:
from pyspark.sql.functions import expr
df.groupBy("c1","c2") \
.pivot("c3") \
.agg(expr("coalesce(first(c4))")).show()
您需要使用coalesce
函数将缺失值替换为null
。