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

2024-06-26 13:25:04 发布

您现在位置:Python中文网/ 问答频道 /正文

在对数据帧进行分组和聚合时,我希望使用lambda函数中一个非聚合列的值来聚合另一列。你知道吗

我有一个熊猫数据框,cashFlowDF有3列,投资,贴现率和现金流。投资具有投资工具的标识符,贴现率具有特定工具的贴现率,现金流具有一系列现金流(按期间排序)。我想创建另一个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%的比率计算所有投资工具的净现值。我想使用贴现率列中的值来计算净现值。我想不出一种方法来把贴现率传递给lambda函数。你知道吗

有一个冗长的方法,我可以得到一个独特的投资和贴现率的DF,然后在它上面循环使用一块现金流DF的agg。但是有没有更有效的方法呢?你知道吗


Tags: 工具数据方法lambda函数df排序标识符