在两个数据框之间推断(四舍五入问题)

时间:2019-07-17 20:57:49

标签: python pandas

我在尝试在两个数据框之间推断时遇到问题

 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年。每个数据框都是一年。

我需要帮助。

1 个答案:

答案 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