如何将具有嵌套元素的列从其他列(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("*"))
我有一个 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"}
我试过
我试过 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("*"))