微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

按日期累计总和数据框

如何解决按日期累计总和数据框

我有一个 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 天的累计日期和总和。

解决方法

在固定窗口中使用滚动:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。