我有一个数据框,其中包含以下信息:
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