所以我得到了一个熊猫数据框,它以1秒的分辨率包含了2个用水值。值为“热输入”和“热输出”。hotIn可以以1秒的分辨率记录到十分之一加仑,而hotOut则记录代表一加仑的整数脉冲,即当脉冲发生时,一加仑已经通过仪表。脉冲大约每14-15秒出现一次
数据大致如下所示:
Index hotIn(gpm) hotOut(pulse=1gal)
2019-03-23T00:00:00 4 0
2019-03-23T00:00:01 5 0
2019-03-23T00:00:02 4 0
2019-03-23T00:00:03 4 0
2019-03-23T00:00:04 3 0
2019-03-23T00:00:05 4 1
2019-03-23T00:00:06 4 0
2019-03-23T00:00:07 5 0
2019-03-23T00:00:08 3 0
2019-03-23T00:00:09 3 0
2019-03-23T00:00:10 4 0
2019-03-23T00:00:11 4 0
2019-03-23T00:00:12 5 0
2019-03-23T00:00:13 5 1
我想做的是根据脉冲的出现对数据帧进行重新采样或重新编制索引,并对新时间戳之间的hotIn求和
例如,在00:00:00-00:00:05和00:00:06-00:00:13之间求和hotIn
理想情况下,结果如下所示:
Index hotIn sum(gpm) hotOut(pulse=1gal)
2019-03-23T00:00:05 24 1
2019-03-23T00:00:13 32 1
我已经探索了使用两步for-elif循环,只检查hotOut==1,但在大型数据集上速度非常慢。如果可能的话,熊猫的时间戳功能肯定会更出色。 我也不能简单地在设定的频率上重新采样,因为脉冲之间的间隔是周期性变化的。主要问题是脉冲变化之间的时间戳周期,因此一般的重采样规则不起作用。我在提取与脉冲相关的时间戳并将其作为新索引应用于main时,也遇到了匹配数据帧长度的问题
IIUC,你可以做:
输出:
您不想在索引上分组。只要
'hotOut(pulse=1gal)'
发生更改,您就要分组相关问题 更多 >
编程相关推荐