使用原始DF中的列/值进行Groupby Agg lambda函数

时间:2019-08-15 18:05:58

标签: python pandas

在对大熊猫数据框进行分组和聚合时,我想使用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。但是,有没有更有效的方法呢?

0 个答案:

没有答案