2015-03-30 67 views
0

我有一個數據框,其中索引是時間,但每行數據不是同質的w.r.t.時間如下:熊貓:添加「對角」

    obs_TQ  obs_PQ  
year quarter       
1 1  5499.330651 1655.414960 
    2  4650.849431 1807.889632 
    3  5417.065129 3352.855656 
    4  7771.021167 2343.369804 

其中obs_TQ是本季度的觀察,obs_PQ是過去一個季度的觀察。我想總結一下按季度觀察,因此結果按季度將是

        real_obs 
year quarter 
    1  1  obs_TQ[1,1] + obs_PQ[1,2] 
    1  2  obs_TQ[1,2] + obs_PQ[1,3] 

也就是說,對於每一行,我需要從該行從下一行添加obs_TQobs_PQ

     real_obs 
year quarter 
    1  1  7307.220283 
    1  2  8003.705087 

是否有任何有效的矢量化的方式來做到這一點?按索引分組不會在這裏工作,因爲我需要結合來自不同組的數據,而且我沒有真正意識到我可以在此上下文中使用任何其他工具。

回答

2

除非我錯過了一些東西,難道你只是將TQ添加到移位的PQ?

>>> (df["obs_TQ"] + df["obs_PQ"].shift(-1)).to_frame("real_obs") 
       real_obs 
year quarter    
1 1  7307.220283 
    2  8003.705087 
    3  7760.434933 
    4    NaN 
+0

如果我有第三個子索引,如'輸入[0,1]',該怎麼辦?確保它的一種方法是預先選擇'df.query(「type == i」)* *來執行你的命令,並遍歷所有'i'。我可以把它加入'shift()'嗎? – FooBar 2015-04-02 18:29:14