python - 累积和,间隔刷新,python pandas
问题描述
我有一些带时间戳的数据,我想运行一个扩展的总和,它会刷新,比如说每天 7:00(从零重新开始),有点像“锯齿”总和。我怎么能在熊猫中做到这一点?非常感谢,JT2
解决方案
- 最简单的情况是日期的
groupby()
。floor("D")
为了满足您的要求,在做地板前减去 7 小时 - 然后使用
transform("cumsum")
这样你就可以得到与原始数据帧相同基数的运行总数 - 显示了早上 6 点和早上 7 点的结果,您会看到总数正在重置
import pandas as pd
import random
df = pd.DataFrame([{'DATE':d, "value":random.randint(0,10)}
for d in pd.date_range(start=datetime(2020,7,24),end=datetime(2020,7,30), freq="15min")])
df["cumsum"] = df.groupby((df["DATE"]-pd.Timestamp(1970,1,1,7)).dt.floor("D"))["value"].transform("cumsum")
df[df["DATE"].dt.hour.isin([6,7])][:15]
输出
DATE value cumsum
2020-07-24 06:00:00 3 137
2020-07-24 06:15:00 0 137
2020-07-24 06:30:00 6 143
2020-07-24 06:45:00 7 150
2020-07-24 07:00:00 0 0
2020-07-24 07:15:00 3 3
2020-07-24 07:30:00 10 13
2020-07-24 07:45:00 5 18
2020-07-25 06:00:00 6 459
2020-07-25 06:15:00 10 469
2020-07-25 06:30:00 8 477
2020-07-25 06:45:00 8 485
2020-07-25 07:00:00 3 3
2020-07-25 07:15:00 4 7
2020-07-25 07:30:00 0 7
推荐阅读
- javascript - 反应 this.setState 没有更新状态
- dart - 如何将 List _data 从 main() 传递到有状态小部件 (LIstView)?
- sql-server - 如何将图像插入 SQL Server 表
- html - 如何使用角度在 Html 中显示日期?
- utf-8 - PHPMailer 5.2.1 的编码问题
- powerbi - 带有百分比度量的帕累托图 Power BI
- android - 在 PWA 中,虚拟键盘与 html 元素重叠,而在移动 chrome 浏览器中则不会
- netty - ChannelInboundHandler.channelRead 在连接的 ChannelFutureListener.operationComplete 之前被调用
- unity3d - Unity 中的无限视差背景
- python - django.core.exceptions.ImproperlyConfigured:禁止创建没有“字段”属性或“排除”属性的 ModelForm