2016-09-07 10 views
3

データフレームを掛け合わせて行キーを保存するのが苦労しています。パンダのデータフレームを乗算して行のキーを保存する方法

私は2つのファイルを持っており、F1とF2と呼んでいます。 F1には、複数パートのグループキー(g1、g2、g3)、2パートタイプのキー(k1、k2)、およびいくつかの重み(r1、r2)があります。 F2には、各タイプキーの一連の値があります。

私はそれらをk1とk2に参加させ、それぞれのnに対してr1とr2を掛けたいと思います。

私はgroupbyとdataframeの乗算はうまくいくと思っていますが、どうやってそれを行うのか分かりません。私が仕事をしなければならないのは、マージして列ごとに掛けることですが、それは超低速です。

F1 
g1 g2 g3 k1 k2 r1 r2 
A A A A A 1 2 
A A A A B 3 4 
A A B A B 2 3 

F2 
k1 k2 n r1 r2 
A A 1 0 1 
A A 2 1 1 
A A 3 1 0 
A B 1 3 4 
A B 2 4 4 
A B 3 4 3 
A C 1 1 1 
A C 3 4 5 
A C 2 3 4 

Result 
g1 g2 g3 k1 k2 n r1 r2 
A A A A A 1 0 2 
A A A A A 2 1 2 
A A A A A 3 1 0 
A A A A B 1 9 16 
A A A A B 2 12 16 
A A A A B 3 12 12 
A A B A B 1 6 12 
A A B A B 2 8 12 
A A B A B 3 8 9 

おかげ

答えて

1
mrg = F1.merge(F2, on=['k1', 'k2']) 

mrg['r1'] = mrg.filter(like='r1').prod(1) 
mrg['r2'] = mrg.filter(like='r2').prod(1) 
drops = ['r1_x', 'r1_y', 'r2_x', 'r2_y'] 
mrg.drop(drops, axis=1) 

enter image description here

関連する問題