如何将具有嵌套元素的列从其他列(withColumn)添加到数据框

how to add a column with nested elements to a dataframe from other columns (withColumn)

我有一个 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"}

我试过 但我不知道 PySpark 中的正确语法是什么,与那个问题相反,它是 Scala,并且该解决方案看起来只适用于 1 行,我需要为数亿行执行此操作。

我试过 df2 = df.withColumn("V", struct("V.*", col("C1").as('C1'))) 但这给出了一个神秘的语法错误。

编辑:我不会说这个问题是 的重复,因为用户在这里发布的解决我的问题的解决方案没有发布在那里。

如何从同一行中的其余列创建嵌套列 V

在PySpark中你可以使用struct来实现。您不需要别名。

df.withColumn("V", struct(col("C"), col("C1"), col("C2"), col("C3"))

如果您不想对列名进行硬编码,您也可以这样做

df.withColumn("V", struct(col("*"))