【问题标题】:cumulative sum dataframe by date按日期的累积总和数据帧
【发布时间】:2021-06-09 14:00:09
【问题描述】:

我有一个 pandas 数据框,我需要计算过去 20 天的累积总和。

User       Date      A    B  
User1   01/10/2020   1    0 
User1   10/10/2020   0    1
User1   15/10/2020   1    1
User1   21/10/2020   0    0
User2   10/10/2020   0    0
User2   21/10/2020   1    0
User2   03/11/2020   1    0

因此,对于每一行,仅对过去 20 天内的行求和。

User       Date      A    B  
User1   01/10/2020   1    0 
User1   10/10/2020   1    1
User1   15/10/2020   2    2
User1   21/10/2020   1    2
User2   10/10/2020   0    0
User2   21/10/2020   1    0
User2   03/11/2020   2    0

我用cumsum

df.groupby("user").cumsum()

但我不知道如何检查仅过去 20 天的日期和累计。

【问题讨论】:

  • 使用滚动和示例代码series.rolling(20).sum()

标签: pandas dataframe cumsum


【解决方案1】:

使用固定窗口滚动:

tmp = (
    df.groupby('User')
        .apply(lambda group: group.rolling('20d', on='Date').sum())
)
df[['A_cumsum', 'B_cumsum']] = tmp[['A','B']]

输出:

    User       Date  A  B  A_cumsum  B_cumsum
0  User1 2020-10-01  1  0       1.0       0.0
1  User1 2020-10-10  0  1       1.0       1.0
2  User1 2020-10-15  1  1       2.0       2.0
3  User1 2020-10-21  0  0       1.0       2.0
4  User2 2020-10-10  0  0       0.0       0.0
5  User2 2020-10-21  1  0       1.0       0.0
6  User2 2020-11-03  1  0       2.0       0.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    相关资源
    最近更新 更多