pyspark数据框可在多个列上动态运行

时间:2019-02-28 09:35:42

标签: python apache-spark pyspark apache-spark-sql

pyspark 中,假设我有一个名为'a1','a2','a3'...'a99'的列的数据框,如何对它们中的每一个应用操作以动态创建具有新名称的新列?

例如,获取诸如sum('a1') as 'total_a1' , ... sum('a99') as 'total_a99'之类的新列。

1 个答案:

答案 0 :(得分:0)

您可以对alias使用列表推导。

仅返回新列:

import pyspark.sql.functions as f
df1 = df.select(*[f.sum(c).alias("total_"+c) for c in df.columns])

如果您还想保留现有列:

df2 = df.select("*", *[f.sum(c).alias("total_"+c) for c in df.columns])