2016-09-07 67 views
3

我正在努力將數據框相乘並保留行鍵。如何乘大熊貓數據框並保留行鍵

我有兩個文件,稱他們說F1和F2。 F1具有多部分組鍵(g1,g2,g3),兩部分類型鍵(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

相關問題