我有一个看起来像PySpark数据框
C C1 C2 C3
1 2 3 4
我想添加另一个嵌套的列,这将使数据框的该列成为json或对象,我什至不确定这是什么正确的用词。它将从同一行的其他列中获取信息
C C1 C2 C3 V
1 2 3 4 {"C:1", "C1:2", "C2:3", "C3:4"}
我尝试过How to add a nested column to a DataFrame,但是我不知道PySpark中正确的语法是什么,与这个问题相反,它是Scala,并且该解决方案看起来仅适用于1行,我需要做数亿行。
我已经尝试过df2 = df.withColumn("V", struct("V.*", col("C1").as('C1')))
,但这给出了一个神秘的语法错误。
编辑:我不会说这个问题是pyspark convert row to json with nulls的重复,因为此处没有发布由用户在此处发布的解决我问题的解决方案。
如何从同一行的其余列中创建嵌套的列V
?
答案 0 :(得分:1)
在PySpark中,您可以使用struct来实现。您不需要别名。
df.withColumn("V", struct(col("C"), col("C1"), col("C2"), col("C3"))
如果您不想对列名进行硬编码,也可以
df.withColumn("V", struct(col("*"))