我的数据框由第1列(即事件)和第2列(即日期时间)组成:
样本数据
Event Time
0 2020-02-12 11:00:00
0 2020-02-12 11:30:00
2 2020-02-12 12:00:00
1 2020-02-12 12:30:00
0 2020-02-12 13:00:00
0 2020-02-12 13:30:00
0 2020-02-12 14:00:00
1 2020-02-12 14:30:00
0 2020-02-12 15:00:00
0 2020-02-12 15:30:00
我想找出每个活动的开始时间和结束时间:
期望数据
Event EventStartTime EventEndTime
0 2020-02-12 11:00:00 2020-02-12 12:00:00
2 2020-02-12 12:00:00 2020-02-12 12:30:00
1 2020-02-12 12:30:00 2020-02-12 13:00:00
0 2020-02-12 13:00:00 2020-02-12 14:30:00
1 2020-02-12 14:30:00 2020-02-12 15:00:00
注意:EventEndTime是事件将值从值1更改为0或任何其他值的时间,反之亦然
假设数据帧为
data
:诀窍是保存您的活动编号;如果下一个事件编号与保存的事件编号不同,则必须结束保存的事件编号并启动新的事件编号
下面是一种无需for循环即可获得结果的方法。我假设输入数据被读入名为df的数据帧:
现在,我创建了一个名为“change”的变量,它告诉您事件是否已更改
这就是dfout现在的样子:
现在,我继续删除事件未更改的行:
现在,我将看到事件已更改的行
接下来,当前事件的事件结束时间是下一个事件的开始时间
数据帧如下所示:
如果不需要,您可以选择删除“更改”列和最后一行
使用GROUPBY和agg获得所需格式的输出
输出:
相关问题 更多 >
编程相关推荐