【发布时间】:2020-06-03 11:25:24
【问题描述】:
我有一个数据框包含第 1 列,即事件,第 2 列是日期时间:
样本数据
Class Event Time
0 A 0 2020-02-19 11:00:00
1 A 0 2020-02-19 11:30:00
2 B 1 2020-02-19 11:00:00
3 B 1 2020-02-19 11:30:00
4 B 0 2020-02-19 12:00:00
5 B 0 2020-02-19 12:30:00
6 A 0 2020-02-19 14:00:00
7 B 1 2020-02-19 13:30:00
8 A 1 2020-02-19 15:00:00
9 B 1 2020-02-19 15:30:00
10 A 0 2020-02-19 15:30:00
11 B 0 2020-02-19 16:00:00
12 A 1 2020-02-19 16:30:00
我想按班级查找每个事件的开始时间和结束时间: 我试过下面的代码from the answer to my previous question,但我得到一个空的数据框:
current_event = None
result = []
grouped=df.groupby(['Class'])
for name, group in grouped:
for class, event, time in zip(data['Class'],data['Event'], data['Time']):
if event != current_event:
if current_event is not None:
result.append([Class,current_event, start_time, time])
class, current_event, start_time = class, event, time
data = pandas.DataFrame(result, columns=['Class','Event','EventStartTime','EventEndTime'])
所需数据
Class Event EventStartTime EventEndTime
0 A 0 2020-02-19 11:00:00 2020-02-19 15:00:00
1 A 1 2020-02-19 15:00:00 2020-02-10 15:30:00
2 A 0 2020-02-19 15:30:00 2020-02-10 16:30:00
3 B 1 2020-02-19 11:00:00 2020-02-10 12:00:00
4 B 0 2020-02-19 12:00:00 2020-02-19 13:30:00
5 B 1 2020-02-19 13:30:00 2020-02-19 16:00:00
注意:EventEndTime 是事件将值从值 1 更改为更改为 0 或特定类的任何其他值的时间
【问题讨论】:
-
@luigigi 如果你仔细看,它确实有道理。请在发表任何评论时通过逻辑。
标签: python pandas data-analysis data-manipulation