次のような 2 つの pandas データ フレームがあります。
import pandas as pd
df_one = pd.DataFrame( {
'A': [1,1,2,3,4,4,4],
'B1': [0.5,0.0,0.2,0.1,0.3,0.2,0.1],
'B2': [0.2,0.3,0.1,0.5,0.3,0.1,0.2],
'B3': [0.1,0.2,0.0,0.9,0.0,0.3,0.5]} );
df_two = pd.DataFrame( {
'A': [1,2,3,4],
'C1': [1.0,9.0,2.1,9.0],
'C2': [2.0,3.0,0.7,1.1],
'C3': [5.0,4.0,2.3,3.4]} );
df_one
A B1 B2 B3
0 1 0.5 0.2 0.1
1 1 0.0 0.3 0.2
2 2 0.2 0.1 0.0
3 3 0.1 0.5 0.9
4 4 0.3 0.3 0.0
5 4 0.2 0.1 0.3
6 4 0.1 0.2 0.5
df_two
A C1 C2 C3
0 1 1.0 2.0 5.0
1 2 9.0 3.0 4.0
2 3 2.1 0.7 2.3
3 4 9.0 1.1 3.4
私がやりたいのは、最初のデータ フレームの行を 2 番目のデータ フレームの行で乗算するスカラー積を計算することです。つまり、\sum_i B_i * C_i
最初のデータ フレームの行が乗算されるようにします。列の値がA
両方のフレームで一致する場合にのみ、2 番目のデータ フレームの行によって。ループしてifを使用する方法は知っていますが、より効率的なnumpyのような方法またはパンダのような方法でそれを行いたいと思います。どんな助けでも大歓迎です:)