在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