【问题标题】:Pandas groupby aggregation with variable time windows具有可变时间窗口的 Pandas groupby 聚合
【发布时间】:2018-10-23 16:12:43
【问题描述】:

我有一个数据框 (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

我想通过groupbymonth-yearname 得到a 列的总和、b 列的平均值和c 列的标准差。但是,我希望总和、平均值和标准是滚动/累积数字。最重要的是,我希望滚动/累积数是 start_dateend_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

谢谢。

【问题讨论】:

    标签: python pandas pandas-groupby


    【解决方案1】:

    你可以使用 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
    

    【讨论】:

    • 我相信这对某些部分不起作用。它适用于 X,它的 start_date 和 end_date 始终是月份的开始和结束。但是,对于 Y,其 start_date 和 end_date 的增量为两个月,我希望 2018-02 中的条目显示 2018-01 和 2018-02 的累积总和。
    猜你喜欢
    • 2020-12-25
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 2021-10-02
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    相关资源
    最近更新 更多