我有一个带有4列(C1,C2,C3和C4)的pySpark数据框。在第三列(C3)中,我具有分类值,例如V1,V2,V3;在第四列(C4)中,我具有其相应的数值。我正在尝试添加其他列V1,V2和V3,其中这些新列的值应来自第四列(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
我以某种方式无法发布数据的表格格式,但我认为它很容易可视化。
一些建议将不胜感激
最佳答案
您可以尝试pivot()
您的DataFrame
:
from pyspark.sql.functions import expr
df.groupBy("c1","c2") \
.pivot("c3") \
.agg(expr("coalesce(first(c4))")).show()
您需要功能
coalesce
用null
替换缺少的值。关于python - 用pySpark中第二列的值对行进行转置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40792086/