如何解决按日期累计总和数据框
我有一个 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 举报,一经查实,本站将立刻删除。