2017-07-28 10 views
0

私はpysparkでDataframeを使用しています。表1のようなテーブルが1つあります。それは、各IDの表1の3列目の合計である - それはどのように多くの貴様カテゴリIDごと pyparkのデータフレーム - 集計関数を2つの列に適用する方法は?

  • 和(カウント)である -

    • num_category:私は、表2を取得する必要があります。

    例:

    表1

    id |category | count 
    
    1 | 4 | 1 
    1 | 3 | 2 
    1 | 1 | 2 
    2 | 2 | 1 
    2 | 1 | 1 
    

    表2

    id |num_category| sum(count) 
    
    1 | 3  | 5 
    2 | 2  | 2 
    

    私が試してみてください。

    あなたは、単一のグループ化されたデータ上で複数のカラム集約を行うことができます

    Error:

     1 table1 = data.groupBy("id","category").agg(count("*")) 
    ---> 2 cat = table1.groupBy("id").agg(count("*")) 
         count = table1.groupBy("id").agg(func.sum("count")) 
         table2 = cat.join(count, cat.id == count.id) 
    TypeError: 'DataFrame' object is not callable 
    
  • 答えて

    0

    を、

    data.groupby('id').agg({'category':'count','count':'sum'}).withColumnRenamed('count(category)',"num_category").show() 
    +---+-------+--------+ 
    | id|num_cat|sum(cnt)| 
    +---+-------+--------+ 
    | 1|  3|  5| 
    | 2|  2|  2| 
    +---+-------+--------+ 
    
    +0

    それは完璧でした! Tks! – Thaise

    関連する問題