pyspark 避免重复列条件

fgw7neuy  于 2023-01-20  发布在  Spark
关注(0)|答案(1)|浏览(121)

假设我有下面的df-

students = spark.createDataFrame(
    [
        ("amit",),
        ("amit",),
        ("itay",),
    ],
    ["student"],
)

我想根据student列中的值创建很多列。我确信在这个数据框中可能只有2个值。
示例:

students = students.withColumn(
    "address", f.when(f.col("student") == "amit", f.lit("berlin")).otherwise(f.lit("paris"))
).withColumn(
    "studies", f.when(f.col("student") == "amit", f.lit("CS")).otherwise(f.lit("physics"))
).withColumn(
    "age", f.when(f.col("student") == "amit", f.lit("25")).otherwise(f.lit("27"))
)

我可以做的更干净,而不是重复所有的时间f.when(f.col("student") == "amit"或创建此列在一起?任何建议都可以很好。

qxsslcnc

qxsslcnc1#

你可以创建一个3元组的列表,其中包含创建列所需的所有信息:

values = [
    ("address", "berlin", "paris"),
    ("studies", "CS", "physics"),
    ("age", "25", "27")
]

然后,可以通过迭代values来创建spark列:
x一个一个一个一个x一个一个二个x

相关问题