pra*_*ads 4 python apache-spark-sql pyspark
我有一个数据框,其中有很多列(超过 50 列),并且想要选择所有列,因为它们很少通过维护以下顺序重命名列名。我尝试了以下方法,
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"))
Run Code Online (Sandbox Code Playgroud)
并得到错误,
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"))
Run Code Online (Sandbox Code Playgroud)
这给出了以下错误,
`TypeError: 'Column' object is not callable`
Run Code Online (Sandbox Code Playgroud)
非常感谢任何帮助。
我们可以将列附加在一起并从 df 中选择,
df.select([col("id").alias("eventid"),col("starttime").alias("eventstarttime"),col("endtime").alias("eventendtime")]+cols+[lit(proceessing_time).alias("processingtime")])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15570 次 |
| 最近记录: |