2016-08-31 112 views
0

新的列名我有一些聚合函數下面的代碼:pyspark:用於聚合領域

new_df = my_df.groupBy('id').agg({"id": "count", "money":"max"}) 

然後把新的一列,我是COUNT(id)MAX(money)。我可以自己指定列名而不是使用默認的列名嗎?例如。我希望他們被稱爲my_count_idmy_max_money。我怎麼做?謝謝!

+0

我已經使用'withColumnRenamed',但它不是一個很優雅的解決方案。 – David

回答

1

使用的列不字典:

>>> from pyspark.sql.functions import * 
>>> my_df.groupBy('id').agg(count("id").alias("some name"), max("money").alias("some other name")) 
1

也許是這樣的:

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

或:

import pyspark.sql.functions as func 

new_df = my_df.groupBy('id') \ 
    .agg(func.count("id").alias("my_count_id"), 
     func.max("money").alias("my_max_money"))