をスピードアップ:パンダforeachの行乗算 - 私はEXTREM遅いコードを有する
Aデータフレームは、約2,000,000行2列(V1、V2)とマルチインデックス(日付とID)とtmp
と呼ばれます。
V1 V2
Date ID
2000-01-01 1 0.3 0.1
2000-01-01 2 0.3 0.1
2000-01-02 1 0.1 0.1
.....
とref
は250列
C1 C2 ... C250
ID
1 0.2 0.3 ... 0.1
2 1.2 1.3 ... 0.0
期待される結果は次の形式を持っている必要があります。
sum1 = pd.DataFrame(0, index=idx1, columns=idx2)
sum2 = pd.DataFrame(0, index=idx1, columns=idx2)
def gen(row):
i1 = row.name[0] # date
i2 = row.name[1] # id
sum1.loc[i1] += ref.loc[i2] * row['V1']
sum2.loc[i1] += ref.loc[i2] * row['V2']
tmp.apply(gen , axis=1)
:
C1 C2 ... C250
Date
2000-01-01 xx xx ... xx
私はそれを試してみました
はこれをスピードアップすることは可能です - 私はCythonでそれを試みたが、3時間後にアプリを殺してきた...
サンプルデータを追加できますか? – jezrael