如何在python中按类查找事件组的开始时间和结束时间?

2024-06-28 11:15:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据框由第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更改为Get change)更改为0或特定类的任何其他值时的时间


Tags: 数据noneeventdatatime时间事件result
1条回答
网友
1楼 · 发布于 2024-06-28 11:15:01

尝试:

dfg = df.groupby('Class')
df_new = pd.DataFrame()
for c,d in dfg:
    dfx = d[~(d.Event == d.shift().Event)]
    dfx['EventEndTime'] = d[~(d.Event == d.shift().Event)].shift(-1)['Time']
    dfx = dfx.dropna()
    df_new = pd.concat([df_new, dfx], ignore_index=True)
df_new.columns = ['Class','Event','EventStartTime','EventEndTime']
print(df_new)

  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-19 15:30:00
2     A      0 2020-02-19 15:30:00 2020-02-19 16:30:00
3     B      1 2020-02-19 11:00:00 2020-02-19 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

相关问题 更多 >