Pandas调整数据帧组的最后一行

时间:2016-11-04 23:08:14

标签: python pandas numpy

我有一份每日级别数据列表,我已将这些数据汇总到每个唯一公司/组分组的季度级别。然后我计算出同比增长。

但是,对于本季度,我希望将年度同比计算调整为仅计入季度至今期间。例如,假设截至2016年11月4日的数据是最新的,并且该季度从2016年10月1日开始到2016年12月31日结束,我想计算10/1 / 2016-11 / 4之间交易的增长/ 2016年和10/1 / 2015-11 / 4/2015。

假设从2016年11月4日起数据是最新数据,我如何计算最近一个季度的年增长率,我只有部分数据?

每日数据: df =

Company Group Period  Date        Value 
A       X     2014Q1  02/21/2015  3     
A       X     2014Q1  03/04/2015  4
A       X     2014Q1  03/16/2015  2   
A       X     2014Q2  04/21/2015  1    
A       X     2014Q2  05/04/2015  2
A       X     2014Q2  05/16/2015  3  
A       X     2014Q3  08/03/2015  1
A       X     2014Q3  08/14/2015  2 
A       X     2014Q4  10/16/2015  4  
A       X     2014Q4  11/03/2015  2
A       X     2014Q4  12/14/2015  3     
A       X     2015Q1  02/21/2015  2     
A       X     2015Q1  03/04/2015  2
A       X     2015Q1  03/16/2015  1   
A       X     2015Q2  04/21/2015  3     
A       X     2015Q2  05/04/2015  2
A       X     2015Q2  05/16/2015  3  
A       X     2015Q3  08/03/2015  4
A       X     2015Q3  08/14/2015  2 
A       X     2015Q4  10/16/2015  1  
A       X     2015Q4  11/03/2015  1
A       X     2015Q4  12/14/2015  2 
A       X     2016Q1  02/21/2016  3     
A       X     2016Q1  03/04/2016  2
A       X     2016Q1  03/16/2016  2   
A       X     2016Q2  04/21/2016  3     
A       X     2016Q2  05/04/2016  1
A       X     2016Q2  05/16/2016  2  
A       X     2016Q3  08/03/2016  5
A       X     2016Q3  08/14/2016  4 
A       X     2016Q4  10/16/2016  3
A       XX    2015Q1  02/21/2015  2     
A       XX    2015Q1  03/04/2015  1
A       XX    2015Q1  03/16/2015  1   
A       XX    2015Q2  04/21/2015  3     
A       XX    2015Q2  05/04/2015  2
A       XX    2015Q2  05/16/2015  1  
A       XX    2015Q3  08/03/2015  4
A       XX    2015Q3  08/14/2015  2 
A       XX    2015Q4  10/16/2015  5  
A       XX    2015Q4  11/03/2015  1
A       XX    2015Q4  12/14/2015  2 
A       XX    2016Q1  02/21/2016  5     
A       XX    2016Q1  03/04/2016  2
A       XX    2016Q1  03/16/2016  2   
A       XX    2016Q2  04/21/2016  1     
A       XX    2016Q2  05/04/2016  1
A       XX    2016Q2  05/16/2016  2  
A       XX    2016Q3  08/03/2016  2
A       XX    2016Q3  08/14/2016  3 
A       XX    2016Q4  10/13/2016  1
A       XX    2016Q4  10/18/2016  1

季度数据:df2 =

Company Group Period  EndDate      Value Pct_Growth_YoY
A       X     2014Q1  3/31/2015    9     NaN
A       X     2014Q2  6/30/2015    6     NaN
A       X     2014Q3  9/30/2015    3     NaN
A       X     2014Q4  12/31/2015   9     NaN
A       X     2015Q1  3/31/2015    5     -0.44
A       X     2015Q2  6/30/2015    8     0.33
A       X     2015Q3  9/30/2015    6     1.0
A       X     2015Q4  12/31/2015   4     -0.55
A       X     2016Q1  3/31/2016    7     0.40
A       X     2016Q2  6/30/2016    6     -0.25
A       X     2016Q3  9/30/2016    9     0.50
A       X     2016Q4  12/31/2016   3     -0.25
A       XX    2015Q1  3/31/2015    4     NaN
A       XX    2015Q2  6/30/2015    6     NaN
A       XX    2015Q3  9/30/2015    6     NaN
A       XX    2015Q4  12/31/2015   8     NaN
A       XX    2016Q1  3/31/2016    9     1.25
A       XX    2016Q2  6/30/2016    4     -0.33
A       XX    2016Q3  9/30/2016    5     -0.16
A       XX    2016Q4  12/31/2016   2     -0.75

我想计算每个独特公司/集团组合的季度与年度同比增长,而不是将部分2016Q4与2015Q4全部进行比较。

我想要的结果是:

结果=

Company Group Period  EndDate      Value Pct_Growth_YoY
A       X     2014Q1  3/31/2015    9     NaN
A       X     2014Q2  6/30/2015    6     NaN
A       X     2014Q3  9/30/2015    3     NaN
A       X     2014Q4  12/31/2015   9     NaN
A       X     2015Q1  3/31/2015    5     -0.44
A       X     2015Q2  6/30/2015    8     0.33
A       X     2015Q3  9/30/2015    6     1.0
A       X     2015Q4  12/31/2015   4     -0.55
A       X     2016Q1  3/31/2016    7     0.40
A       X     2016Q2  6/30/2016    6     -0.25
A       X     2016Q3  9/30/2016    9     0.50
A       X     2016Q4  12/31/2016   3     0.50
A       XX    2015Q1  3/31/2015    4     NaN
A       XX    2015Q2  6/30/2015    6     NaN
A       XX    2015Q3  9/30/2015    6     NaN
A       XX    2015Q4  12/31/2015   8     NaN
A       XX    2016Q1  3/31/2016    9     1.25
A       XX    2016Q2  6/30/2016    4     -0.33
A       XX    2016Q3  9/30/2016    5     -0.16
A       XX    2016Q4  12/31/2016   2     -0.66

1 个答案:

答案 0 :(得分:0)

在运行password_hash()聚合后,请考虑更新选择的行。选择的行将是每个 Company Group 分组中的max Period 。计算过滤掉一年前的今天某个时间点之后发生的日期。

但是,首先,将您的groupby转换为Date类型。以下内容将保留以下范围内的行:datetime

1/1/2015 - 11/5/2015, 1/1/2016 - today