Python 涉及两个不同数据帧之间的复合增长率的棘手情况

Python 涉及两个不同数据帧之间的复合增长率的棘手情况,python,pandas,numpy,Python,Pandas,Numpy,我希望计算人口普查年份(2011年、2016年)之间的复合年增长率,并使用该增长率推断年份之间的数字 例如 然后计算2011年至2016年的复合年增长率 将复合年增长率应用于中间各年 创建df_2012 Age Census_Tract_001 Census_Tract_002 0 131.95 541.74 创建df_2013 Age Census_Tract_001 Census_Tract_002 0

我希望计算人口普查年份(2011年、2016年)之间的复合年增长率,并使用该增长率推断年份之间的数字

例如 然后计算2011年至2016年的复合年增长率 将复合年增长率应用于中间各年 创建df_2012

 Age      Census_Tract_001   Census_Tract_002
 0        131.95             541.74
创建df_2013

 Age      Census_Tract_001   Census_Tract_002
 0        174.108             489.137
创建df_2014

 Age      Census_Tract_001   Census_Tract_002
 0        229.7355           441.6418
创建df_2015

 Age      Census_Tract_001   Census_Tract_002
 0        303.136           398.7584
我的尝试 我厌倦了做下面的事情 年数 ny=5

当前营业额 pt=

过去营业额 ppt=

m=(pt/ppt)

AGR=年增长率 agr=浮动((米**1/ny)-1)*100


我累了好几个小时,但如果我不能,我将只参考excel中的单元格进行计算,不幸的是…

您可以通过应用公式直接找到CAGR

cagr = (df2/df)**(1/5) - 1

    Age     Census_Tract_001    Census_Tract_002
0   NaN     0.319508            -0.09712
要查找介于
df
s之间的函数,请定义一个函数

f = lambda c: c + c*cagr
并通过使用函数组合调用它来复合它

>>> f(df)
        Age     Census_Tract_001    Census_Tract_002
0       NaN     131.950791          541.728271

>>> f(f(df))
        Age     Census_Tract_001    Census_Tract_002
0       NaN     174.110113          489.115866

在运行之前,是否必须对列进行排序?因为我得到了大量的空值。@OptimusPrime我不知道你原来的
df
是什么,但只需过滤它们,使它们具有相同的列(并且顺序相同):)
f = lambda c: c + c*cagr
>>> f(df)
        Age     Census_Tract_001    Census_Tract_002
0       NaN     131.950791          541.728271

>>> f(f(df))
        Age     Census_Tract_001    Census_Tract_002
0       NaN     174.110113          489.115866