pandas 根据上一行值更改行值

a64a0gku  于 2023-09-29  发布在  其他
关注(0)|答案(1)|浏览(80)

存在包含事件的数据框
| | 结束事件| end_event |
| --|--|--|
| 1 |2023-09-23 17:20| 2023-09-23 17:40|
| 2 |2023-09-24 10:00| 2023-09-24 10:20|
| 3 |2023-09-24 10:20| 2023-09-24 10:40|
| 4 |2023-09-24 10:40| 2023-09-24 11:00|
| 5 |2023-09-25 11:00| 2023-09-25 11:20|
| 6 |2023-09-25 11:20| 2023-09-25 11:40|

  • start_ event* 和 end_event 之间的差异始终为20分钟。如果新事件在前一个事件结束后立即开始,我需要对数据进行分组

| | 结束事件| end_event |
| --|--|--|
| 1 |2023-09-23 17:20| 2023-09-23 17:40|
| 2 |2023-09-24 10:00| 2023-09-24 11:00|
| 3 |2023-09-25 11:00| 2023-09-25 11:40|
一个事件的最大持续时间是一个小时,一天中可能有几个事件

nfzehxib

nfzehxib1#

试试看:

# convert start_event/end_event to datetime (if necessary):
df["start_event"] = pd.to_datetime(df["start_event"])
df["end_event"] = pd.to_datetime(df["end_event"])

out = df.groupby(
    (df["end_event"].diff() != pd.Timedelta("20 minutes")).cumsum(), as_index=False
).agg({"start_event": "first", "end_event": "last"})
print(out)

图纸:

start_event           end_event
0 2023-09-23 17:20:00 2023-09-23 17:40:00
1 2023-09-24 10:00:00 2023-09-24 11:00:00
2 2023-09-25 11:00:00 2023-09-25 11:40:00

相关问题