Pyspark Dataframe select 所有列在几列上都有别名

Pyspark Dataframe select all columns with alias on few columns

我有一个包含很多列(超过 50 列)的数据框,我想 select 所有列,因为它们只有少数列名称,通过维护以下顺序重命名。我尝试了以下,

cols = list(set(df.columns) - {'id','starttime','endtime'})
df.select(col("id").alias("eventid"),col("starttime").alias("eventstarttime"),col("endtime").alias("eventendtime"),*cols,lit(proceessing_time).alias("processingtime"))

并得到错误, SyntaxError: only named arguments may follow *expression

此外,我尝试传递列类型列表而不是 *cols

df.select(col("id").alias("eventid"),col("starttime").alias("eventstarttime"),col("endtime").alias("eventendtime"),([col(x) for x in cols]),lit(proceessing_time).alias("processingtime"))

会出现以下错误,

`TypeError: 'Column' object is not callable`

非常感谢任何帮助。

我们可以将列附加在一起,select 来自 df,

df.select([col("id").alias("eventid"),col("starttime").alias("eventstarttime"),col("endtime").alias("eventendtime")]+cols+[lit(proceessing_time).alias("processingtime")])