首页 > 解决方案 > 具有可变时间窗口的 Pandas groupby 聚合

问题描述

我有一个数据框(df),如下所示:

month-year    name    a    b    c  start_date    end_date
2018-01       X       2    1    4  2018-01-01    2018-01-31
2018-01       Y       1    0    5  2018-01-01    2018-02-31
2018-01       X       1    6    3  2018-01-01    2018-01-31
2018-01       Y       4    10   7  2018-01-01    2018-02-31
2018-02       X       13   4    2  2018-02-01    2018-02-31 
2018-02       Y       22   13   9  2018-01-01    2018-02-31
2018-02       X       3    7    4  2018-02-01    2018-02-31 
2018-02       Y       2    15   0  2018-01-01    2018-02-31

我想要groupby month-yearname得到 column 的总和, columna的平均值和 column 的bstd c。但是,我希望总和、平均值和标准是滚动/累积数字。最重要的是,我希望滚动/累积数是start_dateand内的滚动/累积数end_date

换句话说,我该怎么做才能得到这样的输出?

month-year    name    a    b    c
2018-01       X       3    3.5  0.71
              Y       5    5    1.41
2018-02       X       16   5.5  1.4
              Y       29   9.5  3.86

谢谢你。

标签: pythonpandaspandas-groupby

解决方案


你可以使用 groupby().agg()

df.groupby(['month-year', 'name']).agg({'a':'sum', 'b':'mean', 'c':'std'})


                        a    b    c
month-year  name            
2018-01-01   X         3    3.5   0.707107
             Y         5    5.0   1.414214
2018-02-01   X         16   5.5   1.414214
             Y         24   14.0  6.363961

推荐阅读