私はそれらの "sumproduct()"を計算する必要がある2つの大きな行列(何千もの行以上)があります。大きな行列のSumProductを行うPythonの方法?
行列は次のようである:
import pandas as pd
d1 = {'item':['A','B','C'], 't1':[10,5,10], 't2':[10,10,5], 't3': [100, 0, 0], 't4':[0,100,100]}
data_frame1 = pd.DataFrame(data = d1)
item t1 t2 t3 t4
A 10 10 100 0
B 5 10 0 100
C 10 5 0 100
d2 = {'scenario':[1,1,1,2,2,2], 'step':[1,2,3,1,2,3], 't1':[0.97,0.98,0.99,0.972,0.979,0.991], 't2':[0.960,0.964,0.964,0.972,0.977,0.985], 't3': [0.950,0.956,0.965,0.967,0.970,0.980], 't4':[0.945,0.951,0.955,0.962,0.964,0.973]}
data_frame2 = pd.DataFrame(data = d2)
scenario step t1 t2 t3 t4
1 1 0.97 0.960 0.950 0.945
1 2 0.98 0.964 0.956 0.951
1 3 0.99 0.964 0.965 0.955
2 1 0.972 0.972 0.967 0.962
2 2 0.979 0.977 0.970 0.964
2 3 0.991 0.985 0.980 0.973
および予想される出力は、(結果はアイテム、シナリオ及びステップの組み合わせ毎t4までT1上SUMPRODUCTである)である。
item scenario step result
A 1 1 114.30
A 1 2 115.01
A 1 3 116.07
A 2 1 116.16
A 2 2 116.59
A 2 3 117.75
B 1 1 108.95
B 1 2 109.69
B 1 3 110.09
B 2 1 110.77
B 2 2 111.06
B 2 3 112.14
C 1 1 109.00
C 1 2 109.77
C 1 3 110.22
C 2 1 110.77
C 2 2 111.07
C 2 3 112.17
これを行うためのpythonicの方法はありますか? は(私はとforループを試してみましたが、それは時間がかかりすぎる)
ここで、「SumProduct」という用語を使用しましたか? –