2017-12-07 8 views
2

集計計算を実行しようとしていますが、他のすべてのカテゴリに計算を適用します。他のカテゴリのPandasから集計を取得する

ので、

df.groupby(['index']).agg({data : [func1,func2]}) 

は、インデックスによってグループ化されたデータに集計計算の関数func1とfunc2のを実行しますが、私は、インデックスされていないすべてのデータに対して計算を実行したいです。

例えば

:私はAの結果は、B、C、D内のデータに対して実行するたい

index data 
A  1 
A  2 
A  1 
B  2 
B  2 
B  4 
B  4 
C  1 
C  3 
D  4 
D  1 

これを達成するための斬新な方法はありますか?

答えて

1

私は実際にこれを理解したと思います。基本的に、私は新しいデータフレームを作成し、それを再インデックスしました。

   value 
original_index  
A     44 
A     65 
A     88 
B     69 
B     11 
B     52 
C     56 
C     42 
C     85 
D     66 
D     77 
D     9 

各インデックスをループし、そのインデックスにないすべてを新しいデータフレームにコピーします。それからそれらをすべてつなぎ合わせる。

l = [] 
for i in df.index.unique(): 
    d = df[~df.index.isin([i])].copy() 
    d['new_index'] = i 
    d.drop('original_index',axis=0,inplace=True) 
    d.set_index('new_index',inplace=True) 
    l.append(d) 
df2 = pd.concat(l,axis=0) 

出力リレー:

  value 
new_index  
A    69 
A    11 
A    52 
A    56 
A    42 
A    85 
A    66 
A    77 
A    9 
B    44 
B    65 
B    88 
B    56 
B    42 
B    85 
B    66 
B    77 
B    9 
C    44 
C    65 
C    88 
C    69 
C    11 
C    52 
C    66 
C    77 
C    9 
D    44 
D    65 
D    88 
D    69 
D    11 
D    52 
D    56 
D    42 
D    85 

今、私たちは新しいインデックス上で私たちのGROUPBY機能を適用することができ、それがインデックスにもともとなかった値から結果を返します。

group_df = df2.groupby(['new_index']).agg({'value' :[func1,func2]})[['value']] 

これは機能しますが、より良い方法が必要です。

関連する問題