带参数的pandas.DataFrame.apply()?

时间:2016-03-17 17:38:44

标签: pandas python-3.5

我有一个投资组合DataFrame,其中包含一系列股票和数量:

stock, quantity
AAPL, 100
GOOG, 50

我有一个函数lookup(stock, date)可以返回价格。

lookup()应用于股票DataFrame的最优雅方式是什么?

PS我会使用DataFrame.apply(),但我不相信我能提供日期。

1 个答案:

答案 0 :(得分: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)