[英]How to dynamically create a struct column from a list of column names?
我有一個 dataframe 有 100 列:
root
|-- column1
|-- column2
|-- column3
|-- column4
|-- column5
我有一個列名列表:
struct_list = ['column4','column3','column2']
預期架構:
root
|-- column1
|-- column2
|-- column3
|-- column4
|-- column5
|-- prev_val
|-- column4
|-- column3
|-- column2
目前我正在硬編碼以下值:
df=df.withColumn("prev_val",f.struct(f.col("column4"),f.col("column3"),f.col("column2"))
有沒有一種方法可以動態傳遞列表中的值?
您可以使用列表推導:
import pyspark.sql.functions as f
struct_list = ['column4','column3','column2']
df2 = df.withColumn(
"prev_val",
f.struct(*[f.col(c) for c in struct_list])
)
實際上你甚至不需要f.col
。 您可以直接傳遞列名:
df2 = df.withColumn(
"prev_val",
f.struct(*struct_list)
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.