Pandas dataframe列乘法

时间:2013-09-29 15:35:08

标签: python numpy pandas

如果你有两个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中。

1 个答案:

答案 0 :(得分:0)

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

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

df1.dot(df2)

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

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