0

如何相乘,如果您有 2 个 df 可以使用选定的列相乘,并将结果存储在一个新列中,例如

df1:

                    AAPL IBM GOOG XOM
2011-01-10 16:00:00 1500 0   0    0

df2:

AAPL   IBM    GOOG   XOM
340.99 143.41 614.21 72.02
340.18 143.06 616.01 72.56

我想将 df1 中的 aapl 与 df2 中的 340.99 相乘,并将结果存储在 transaction_amount 中。

4

1 回答 1

0
transaction_amount = np.diag(df1.dot(df2.T))

基本上,要做你想做的事,你想做某种形式的 df1 和 df2 的点积

df1.dot(df2)

但由于它们具有匹配的尺寸,您需要转置其中一个 DataFrame

df2.T

如果您了解矩阵点积的工作原理,您就会明白您只需要来自结果矩阵对角线的数组数据。即:您只想要(X 日的 AAPL 价格 * Y 日的 AAPL 股票,其中 X == Y)因此,矩阵中与您相关的值位于 (0,0), (1,1) , (2,2) 等,即:对角线。

使用 cumsum 创建持有矩阵后,在计算投资组合价值时,这条线也很有用。

一些有用的资源

http://www.mathsisfun.com/algebra/matrix-multiplying.html http://mathinsight.org/dot_product_matrix_notation

于 2013-10-09T01:10:01.417 回答