我在尝试在两个数据框之间推断时遇到问题
df1 = pd.DataFrame([(50,100),(150,250),(250,300)], columns=['a','b'])
df2 = pd.DataFrame([(100,200),(300,400),(500,600)], columns=['a','b'])
我尝试过
cagr_7 = (df2/df1)**(1/5) - 1
f = lambda c: c + c*cagr_7
但是通常情况下,由于每年都有报告,因此之间的年份通常没有意义。是否还有另一种推断选项,也许可以采用差异并多年来应用?
我试图推断5个不同的年份。例如2016年至2021年。每个数据框都是一年。
我需要帮助。
答案 0 :(得分:0)
IIUC,这可能是一个起点:
df1 = pd.DataFrame([(50,100),(150,250),(250,300)], columns=['a','b'])
df2 = pd.DataFrame([(100,200),(300,400),(500,600)], columns=['a','b'])
pd.concat([df1, df2], keys=[2016,2021])\ #concat the datafrmaes using keys to define year
.unstack()\ #reshape dataframe
.reindex(np.arange(2016,2022,1))\ #reindex adding years to interpolate to
.interpolate(method='index')\ #interpolate using method index
.stack(0)\ #reshape dataframe to desired format
.T
输出:
2016 2017 2018 2019 2020 2021
a b a b a b a b a b a b
0 50.0 100.0 60.0 120.0 70.0 140.0 80.0 160.0 90.0 180.0 100.0 200.0
1 150.0 250.0 180.0 280.0 210.0 310.0 240.0 340.0 270.0 370.0 300.0 400.0
2 250.0 300.0 300.0 360.0 350.0 420.0 400.0 480.0 450.0 540.0 500.0 600.0