在groupby之后向python数据帧添加列,保持顺序

在groupby之后向python数据帧添加列,保持顺序,python,pandas,Python,Pandas,我有一个包含如下信息的数据框: month year date well_number depth_to_water April 2007 4/1/07 1 48.60 August 2007 8/1/07 2 80.20 December 2007 12/1/07 EM3

我有一个包含如下信息的数据框:

month     year        date       well_number  depth_to_water  
April     2007        4/1/07           1           48.60   
August    2007        8/1/07           2           80.20   
December  2007       12/1/07           EM3           37.50   
February  2007        2/1/07           27           32.00   
February  2008        2/1/08           27           40.00   
我试图创建一个新的专栏,每个月的水深每年都有差异,所以对于27:32-40=-8

我对数据帧进行了分组,即

grouped_dw = davis_wells.groupby(['well_number', 'month','year'], sort=True)
这正好给了我理论上需要迭代的排序

well_number   month     year            date          depth_to_water          
1             April     2007           4/1/07           48.60   
                        2008           4/1/08           62.30   
                        2009           4/1/09           55.90   
                        2010           4/1/10           36.20   
                        2011           4/1/11           33.90   
我想从中得到:

well_number   month     year            date          depth_to_water   change       
1             April     2007           4/1/07           50               NaN
                        2008           4/1/08           60               -10
                        2009           4/1/09           55               5
                        2010           4/1/10           70               -15
                        2011           4/1/11           30               40
所以我试过了

grouped_dw['change'] = grouped_dw.depth_to_water(-1) - grouped_dw.depth_to_water
这会抛出一个错误。有什么想法吗?很确定,我只是不理解分层分组数据帧是如何工作的

谢谢

编辑:

我用的是sort,它几乎提供了我所需要的一切。。但我需要它在跳到下个月时提供空值

davis_wells = davis_wells.sort(['well_number', 'month'])
davis_wells['change'] = davis_wells.depth_to_water.shift(1) - davis_wells.depth_to_water