2016-03-26 7 views
0

私は次のための解決策を見つけることを試みる:Spark Data FrameのGroupDataでstat関数クロス集計を実行する方法はありますか?

  • 私はgroupBy(A)によってcratedされ、各グループごとにcrosstab(B and C)を実行するためにgroupBy(A)にし、より必要な3列A、BとDataFrame、C.
  • を持っています

    grouped = df.groupby('A') 
    for name, group in grouped: 
        df_crossed = pd.crosstab(group['B'],group['C']) 
        df_crossed = (df_crossed>0).astype(int) 
        df_result[name] = df_crossed.mean(axis=1).max(axis=0) 
    
    :パンダ(私はSPAKデータフレームで作成したいのですが同じ)でPySpark

例で3210

更新日:

例:

In [12]: df Out[12]: A B C 0 AB 100 5 1 AB 200 5 2 AC 150 4 3 AC 500 5


A B C AB 100 5 200 5 AC 150 4 500 5


何かのようなABとACのためのクロス集計する必要がありますより:

AB
C 5 B 100 1 200 1 AC
C 5 4 B 150 0 1 500 1 0

どうすればいいですか?私はこのコードから "のために"実装する方法を見つけることができます ありがとう!

+0

あなたは例の入力と、期待される出力を提供してもらえますか? – zero323

+0

@ zero323私はSpark DFで実装しようとしているPandasコードを追加しました。私は後でデータフレームの例を追加します – feechka

答えて

2

あなたは人工structABをマージし、crosstabのためにそれを使用しようとすることができます:

from pyspark.sql.functions import col, struct 

df.withColumn("AB", struct("A", "B")).crosstab("AB", "C") 
+0

ありがとう!良いアイデア!私はそれを試してみます – feechka

関連する問題