2017-02-07 3 views
1

私はSparkを初めて使用しています。私は属性のgroupbycountをデータフレームdfに適用しようとしています。pysparkでのカウントとゴロピー相当

私は、出力は次のようになりpysparkため、次のパンダコード

df.groupby(['users'])['users'].transform('count') 

と同等のものを見つけたい、これはパンダ

 users     comments 
0  1 Hi I heard about Spark 
1  1   Spark is awesome 
2  2      None 
3  2 And I don't know why 
4  3    Blah blah 

であるように見えます

import pandas as pd 

comments = [ (1, "Hi I heard about Spark"), 
    (1, "Spark is awesome"), 
    (2, None), 
    (2, "And I don't know why..."), 
    (3, "Blah blah")] 

df = pd.DataFrame(comments) 
df.columns = ["users", "comments"] 

0 2 
1 2 
2 2 
3 2 
4 1 
dtype: int64 

お手伝いできますか私はこれをどのように実装することができますPySpark

答えて

1

これは、pyspark:df.groupby('user').count()で機能するはずです。 pyspark groupby()groupBy()Pyspark docs are pretty easy reading with some good examples.

UPDATEの別名である:

今、私は、要求が少し良く理解していること、そのpysparkがまだ​​インプレースtransformサポートしている表示されません。 See this answer.

しかし、あなたは参加によってそれを行うことができます。

df2=df.groupby('users').count() 
df.join(df2, df.users==df2.users, "left")\ 
    .drop(df2.users).drop(df.comments) 

+-----+-----+ 
|users|count| 
+-----+-----+ 
| 1| 2| 
| 1| 2| 
| 3| 1| 
| 2| 2| 
| 2| 2| 
+-----+-----+ 
+0

ありがとう@data_steve。私の問題は '変換 'の部分にあると思う。私は、同じデータフレーム内に新しいカラム(または 'user'カラム)としてカウントされた値を挿入したいと思います。とにかくこれを行う簡単な方法? – MomoPP

+0

@MomoPP通常、小さなデータの例を挙げて、あなたが何を意味しているのかを説明します。開始する場所と出力する内容の両方を表します。私はあなたのポストでこの文言によってちょっと混乱しています。カウント値で置き換えてください。それは何を指していますか?ユーザー列またはデータフレーム? –

+1

スティーブ、どうもありがとう、ありがとうございました。これまでにこの問題に関する詳細を十分に説明してくれなかったのは残念です。今は完全に意味があります。優れた仕事。 – MomoPP