pandas.DataFrame.apply() 带参数?

pandas.DataFrame.apply() with a parameter?

我有一个包含股票和数量列表的投资组合 DataFrame:

stock, quantity
AAPL, 100
GOOG, 50

我有一个函数 lookup(stock, date) returns 价格。

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

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

这应该有效:

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)