1
2つの変数でグループ化し、それらの変数内で計算を実行するデータフレームがあります。明らかに、はるかに効率的Pandas DataFrameでの計算をgroupbyで行い、それをDataFrameに戻しますか?
df=pd.DataFrame({'A':[1,1,1,2,2,2,30,12,122,345],
'B':[1,1,1,2,3,3,3,2,3,4],
'C':[101,230,12,122,345,23,943,83,923,10]})
total = []
avg = []
AID = []
BID = []
for name, group in df.groupby(['A', 'B']):
total.append(group.C.sum())
avg.append(group.C.sum()/group.C.nunique())
AID.append(name[0])
BID.append(name[1])
x = pd.DataFrame({'total':total,'avg':avg,'AID':AID,'BID':BID})
しかし、これを行うと、すなわち、このように、BACK私は終わりだデータフレームに情報を置くための簡単な方法はありますか?
が答えですが、私はもう一つの疑問を持っている - のは、「AVGは本当にユニークで割った値の合計()であるとしましょう他の列の要素 - どのように他の列を参照しますか? np.sum/np.unique(グループ['other_column'])?それは理にかなっていますか? – user1566200
私はおそらく2つのステップでそれを行うでしょう。 'df1 = df.groupby(['A'、 'B'])['C']。agg({'合計':np.sum}); df1 ['avg'] = df1.total/df.groupby(['A'、 'B'])['other']。 df1.reset_index() 'のようなものです。 – Psidom