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")])
我有一个包含很多列(超过 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")])