在对大熊猫数据框进行分组和聚合时,我想使用lambda函数中未聚合列之一的值来聚合另一列。
我有一个熊猫DataFrame,cashFlowDF和3列,分别是INVESTMENT,DISCOUNT_RATE和CASH_FLOW。 INVESTMENT具有投资工具的标识符,DISCOUNT_RATE具有该特定工具的折现率,而CASH_FLOW具有一系列现金流量(按期间排序)。我想创建另一个具有两列的DF NPVDF:INVESTMENT和NPV,其中NPV是净现值。
我无法在lambda函数中使用cashFlowDF的折扣率。如果我想使用特定的折扣率(例如12%),则表达式为:
cashFlowDF.groupby('INVESTMENT').agg({'CASH_FLOW': lambda x: np.npv(rate=0.12/12.0, values=x)})
但是,这将使用所有投资工具的12%比率来计算净现值。我想使用DISCOUNT_RATE列中的值来计算NPV。我无法找到一种将折扣率传递给lambda函数的方法。
有一条漫长的路要走,我可以得到一个唯一的DF INVESTMENT和DISCOUNT_RATE,然后在其上循环以对a CashFlowDF切片使用agg。但是,有没有更有效的方法呢?