pyspark:聚合字段的新列名

pyspark:聚合字段的新列名,pyspark,aggregate-functions,spark-dataframe,Pyspark,Aggregate Functions,Spark Dataframe,我有以下代码和一些聚合函数: new_df = my_df.groupBy('id').agg({"id": "count", "money":"max"}) 然后我的新列是COUNT(id)和MAX(money)。我可以自己指定列名而不是使用默认列名吗?例如,我希望他们被称为my\u count\u id和my\u max\u money。我该怎么做?谢谢 使用列而不是命令: >>> from pyspark.sql.functions import * >>&

我有以下代码和一些聚合函数:

new_df = my_df.groupBy('id').agg({"id": "count", "money":"max"})
然后我的新列是
COUNT(id)
MAX(money)
。我可以自己指定列名而不是使用默认列名吗?例如,我希望他们被称为
my\u count\u id
my\u max\u money
。我该怎么做?谢谢

使用列而不是命令:

>>> from pyspark.sql.functions import *
>>> my_df.groupBy('id').agg(count("id").alias("some name"), max("money").alias("some other name"))
使用非dict列:

>>> from pyspark.sql.functions import *
>>> my_df.groupBy('id').agg(count("id").alias("some name"), max("money").alias("some other name"))
可能是这样的:

new_df = my_df.groupBy('id') \
    .agg({"id": "count", "money": "max"}) \
    .withColumnRenamed("COUNT(id)", "my_count_id") \
    .withColumnRenamed("MAX(money)", "my_max_money")
或:

可能是这样的:

new_df = my_df.groupBy('id') \
    .agg({"id": "count", "money": "max"}) \
    .withColumnRenamed("COUNT(id)", "my_count_id") \
    .withColumnRenamed("MAX(money)", "my_max_money")
或:


我一直在使用
with columnRename
但这不是一个非常优雅的解决方案。我一直在使用
with columnRename
但这不是一个非常优雅的解决方案。假设有一个聚合函数,比如func.sum,当有1k列时,有没有一种有效的方法来分组和别名?我目前的解决方法是:
X=df.columns[1:]new_colls=[df.columns[0]+[X+''u summated'for X in X]exprs={X:sum”for X in X}dg=df.groupBy(“col1”).agg(exprs)。toDF(*new_cols)
假设有一个聚合函数,比如func.sum,当有1k列时,有没有一种有效的方法来实现groupBy和别名?我当前的解决方法是:
X=df.columns[1:]new_columns=[df.columns[0]+[X+''u summated'for X in X]exprs={X:sum”for X in X}dg=df.groupBy(“col1”).agg(exprs).toDF(*new_cols)