使用不同的规则创建结构域

2024-04-26 07:30:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建嵌套元素的结构。 我很难用测试创建嵌套结构。 看看我下面的代码。我想添加结构:

(if x2.fields3 == 1 then create struct_1, if x2.fields3==2 create struct_2)

df = df.withColumn("General",
               struct(
                   col("x1.field1").alias("gen1"),
                   col("x1.field2").alias("gen2"),

                   struct(col("x1.field1").alias("gen3.1"),
                   col("x2.field1").alias("gen3.2"),
                   col("x1.field4").alias("gen3.3"),
                   col("x2.field4").alias("gen3.4"),
                   col("x1.field5").alias("gen3.5"),
                   col("x1.field3").alias("gen3.6"),
                   struct(struct(lit('AA').alias("gen3.7.1.1"),
                    lit("BB").alias("gen3.7.1.2")).alias("gen3.7.1")

                         #Add new struct with test 


                         ).alias("gen3.7")).alias("gen3")

                    )).drop('x1','x2')

Tags: 代码元素dfifcreatealiascol结构
1条回答
网友
1楼 · 发布于 2024-04-26 07:30:41

只需将when与条件一起使用:

when(col("x2.fields3") == lit(1), struct(...).alias("struct_1"))\
.when(col("x2.fields3") == lit(2), struct(...).alias("struct_2"))

相关问题 更多 >