我有1分钟的时间序列数据,事件和持续时间列。有时事件不会发生一段时间,但最后一个事件向前填充,直到下一个事件发生。我们知道每个事件应该持续多少分钟,我想删 debugging 误的向前填充的数据点。
数据如下所示:
df
datetime event duration
2020-01-01 0:00 x 3
2020-01-01 0:01 x 3
2020-01-01 0:02 x 3
2020-01-01 0:03 y 2
2020-01-01 0:04 y 2
2020-01-01 0:05 z 2
2020-01-01 0:06 z 2
2020-01-01 0:07 z 2
2020-01-01 0:08 x 5
...
正如您在0:07所看到的,事件列应该是N/A,但在0:08发生下一个事件之前,该列将填充z。我希望将0:07设置为N/A。持续时间列告诉您事件应该发生多少行。如何实现这一点?
编辑:所以我猜这个想法是,检查持续时间列,计算事件在那个时间发生了多少次,如果它发生的次数超过了持续时间中所说的次数,使它成为NaN,直到下一个事件。x,y,z都是重复发生的事件,所以它们在整个过程中发生了多次。
1条答案
按热度按时间qcuzuvrc1#
对于
df
Dataframe ,您可以尝试以下操作:首先确定
groups
中连接的event
的组(检查结果bool中event
和.cumsum
列的变化),然后通过比较每组的.cumcount
和duration
来确定不正确的event
:当.cumcount
大于或等于duration
时,它是不正确的(>=
,因为.cumcount
从0开始)。然后.mask
在列event
中的那些位置。样品结果: