2016-03-17 38 views
0

我有一個投資組合數據幀與股票和數量的列表:pandas.DataFrame.apply()帶參數?

stock, quantity 
AAPL, 100 
GOOG, 50 

我有一個函數lookup(stock, date)返回的價格。

什麼是最優雅的方式來申請lookup()股票DataFrame?我想用DataFrame.apply()但我不相信我可以提供日期。

+0

那麼,應該日期從何而來? –

+0

看看'args'的參數:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html – MaxU

回答

0

這應該工作:

def lookup(stock, date): 
    prices = {('AAPL', '2016-01-01'): 1, ('GOOG', '2016-01-01'): 2} 
    return prices[(stock, date)] 

>>> date = '2016-01-01' 
>>> df.apply(lambda x: lookup(x[0], date), axis=1) 
0 1 
1 2 
dtype: int64 

如果stock是索引,使用:

>>> df.apply(lambda x: lookup(x.name, date), axis=1) 
+0

實際上這很酷,我也學到了一些東西!謝謝!我有一個問題,x [0]提出的數量(我認爲'AAPL'在我的情況下是在索引中) - 我該如何獲得股票? – cjm2671

+0

嘗試:'df.apply(lambda x:lookup(x.name,date),axis = 1)' –