在groupby之后向pandas python数据帧添加列,维护顺序

时间:2014-09-11 08:30:42

标签: 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           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

这会引发错误。有任何想法吗?我很确定我只是不了解Dataframe的分层工作方式。

谢谢!

编辑:

我使用了sort,它给了我几乎所有我需要的东西..除了我需要它在跳到下个月时给出一个空值。

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

0 个答案:

没有答案