假设我有下面的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"
或创建此列在一起?任何建议都可以很好。
1条答案
按热度按时间qxsslcnc1#
你可以创建一个3元组的列表,其中包含创建列所需的所有信息:
然后,可以通过迭代
values
来创建spark列:x一个一个一个一个x一个一个二个x