2013-09-29 277 views
0

如何繁殖,如果你有2級自由度的乘用選中的列,結果在一個新的列存儲例如熊貓據幀列乘

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中。

+0

你可以有一個看看StackOverflow的格式指導?要確定你想要的東西有點困難。此外,請檢查您的示例數據框架是否有意義。 df2的列名是什麼?這對於答案確實很重要。 – TomAugspurger

+0

嗨我試圖格式化,我沒有得到它的竅門。 df2的列是df1中證券的不同價格。 – trinity

+1

查看我對你的問題的編輯(一旦它通過了同行評審,df2是否有索引?pandas'DataFrames'被標記爲默認情況下,df1 * df2對於'AAPL'將只有一個非'NaN' df2的第一行具有相同的索引值'2011-01-10 16:00:00'(如果這是你的索引) – TomAugspurger

回答

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