2016-08-31 8 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")) 
関連する問題