Python 涉及两个不同数据帧之间的复合增长率的棘手情况
我希望计算人口普查年份(2011年、2016年)之间的复合年增长率,并使用该增长率推断年份之间的数字 例如 然后计算2011年至2016年的复合年增长率 将复合年增长率应用于中间各年 创建df_2012Python 涉及两个不同数据帧之间的复合增长率的棘手情况,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
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