是否可以在Pyspark中组合.agg(dictionary)并使用.alias()重命名生成的列?

是否可以在Pyspark中组合.agg(dictionary)并使用.alias()重命名生成的列?,pyspark,aggregate,Pyspark,Aggregate,我有一个pyspark数据帧'pyspark_df',我想对数据进行分组,并使用一个通用函数字符串名称聚合数据,如以下其中一个:'avg'、'count'、'max'、'mean'、'min'或'sum' 无论聚合类型如何,我都需要将生成的聚合名称“聚合”。 我已经能够做到这一点如下 seriesname = 'Group' dateVar = 'as_of_date' aggSeriesName = 'Balance' aggType = 'sum' name_to_be_Changed =

我有一个pyspark数据帧'pyspark_df',我想对数据进行分组,并使用一个通用函数字符串名称聚合数据,如以下其中一个:'avg'、'count'、'max'、'mean'、'min'或'sum'

无论聚合类型如何,我都需要将生成的聚合名称“聚合”。 我已经能够做到这一点如下

seriesname = 'Group'
dateVar = 'as_of_date'
aggSeriesName = 'Balance'
aggType = 'sum'
name_to_be_Changed = aggType + '(' + aggSeriesName + ')' 
group_sorted = pyspark_df.groupby(dateVar,seriesname).agg({aggSeriesName: aggType}).withColumnRenamed(name_to_be_Changed,'aggregated').toPandas()
但是,有没有办法通过.alias执行此操作?我见过这样的用法

group_sorted = pyspark_df.groupby(dateVar,seriesname).agg(sum(aggSeriesName).alias('aggregated')).toPandas()

如何使用alias而不必键入“SumagSeriesName”部分?希望我能说清楚。

我不知道你为什么问这个问题,因此不能提供一个合适的替代解决方案。据我所知,无法将.aggdicology与结果列重命名为.alias相结合。WithColumnRename是解决这个问题的方法

您还可以执行以下操作:

顶点=sqlContext.createDataFrame[ a、 爱丽丝,34岁, b、 鲍勃,36岁, c、 查理,30岁, d、 大卫,29岁, e、 埃丝特,32岁, f、 范妮,36岁, g、 加比,60岁,[身份证,姓名,年龄] aggSeriesName='age' aggType='sum' targetName='聚合' bla=顶点。选择表达式“{}{}”为“{}”。formataggType、aggSeriesName、targetName 布拉秀 输出:

+----------+
|aggregated|
+----------+
|       257|
+----------+

非常感谢。我更改了标题以澄清我的问题。我将把这个问题再公开几天,看看是否有其他人有解决办法。我不想非得做.withColumnRenamedname\u to\u be\u更改,'aggregated'解决方案,如果我不需要的话。也许是强迫症,但对我来说很难看。