gpt4 book ai didi

python - 组合/合并排序的 pandas 数据框中的时间间隔行

转载 作者:太空宇宙 更新时间:2023-11-03 19:47:31 24 4
gpt4 key购买 nike

我有一个排序的 pandas 数据框,如下所示:

SessionNumber     Timestamp_start       Timestamp_complete   Activity   ColB  ColC
2 2018-02-11 14:17:00 2018-02-11 14:21:00 "A" 3 4
2 2018-02-11 14:21:00 2018-02-11 14:22:30 "A" 3 4
2 2018-02-11 14:23:00 2018-02-11 14:28:30 "A" 3 4
2 2018-02-11 14:29:00 2018-02-11 14:31:30 "B" 3 4
2 2018-02-11 14:33:00 2018-02-11 14:35:30 "A" 3 4
...
3 2018-02-12 08:44:00 2018-02-12 08:50:30 "A" 2 1
3 2018-02-12 08:51:00 2018-02-12 08:51:30 "A" 2 1

我想根据 SessionNumber 将相继发生的相同事件合并到一个新行。此示例的结果应为:

SessionNumber     Timestamp_start       Timestamp_complete   Activity   ColB  ColC
2 2018-02-11 14:17:00 2018-02-11 14:28:30 "A" 3 4
2 2018-02-11 14:29:00 2018-02-11 14:31:30 "B" 3 4
2 2018-02-11 14:33:00 2018-02-11 14:35:30 "A" 3 4
...
3 2018-02-12 08:44:00 2018-02-12 08:51:00 "A" 2 1

数据帧按以下顺序排序:SessionNumber、Timestamp_start、Activity

在同一个 SessionNumber 中,我想组合紧随其后的条目(按时间戳)。我只想在 Activity、ColB 和 ColC 中具有相同值的行以及完整时间戳和开始时间戳之间的时间差低于某个阈值(例如 30 秒)时合并行。由于数据帧已经排序,最明显的想法是迭代行并合并每两行匹配条件的行。例如,删除一行并将新的 Timestamp_complete 设置为剩余一行。

但是迭代对于 pandas 来说是一个坏主意......

还有其他这样做的想法吗?
谢谢!

最佳答案

根据评论和问题更改进行更新:

试试这个:

Activitygrp = (df['Activity'] != df['Activity'].shift().bfill()).cumsum().rename('ActivityGroup')
df_m = (df.groupby(['SessionNumber', 'Activity', Activitygrp, 'ColB', 'ColC'])[['Timestamp_start', 'Timestamp_complete']]
.agg(Time_start=('Timestamp_start', 'first'),
Time_end=('Timestamp_complete', 'last')))
df_m.reset_index()

输出:

|    |   SessionNumber | Activity   |   ActivityGroup |   ColB |   ColC | Time_start          | Time_end            |
|---:|----------------:|:-----------|----------------:|-------:|-------:|:--------------------|:--------------------|
| 0 | 2 | "A" | 0 | 3 | 4 | 2018-02-11 14:17:00 | 2018-02-11 14:28:30 |
| 1 | 2 | "A" | 2 | 3 | 4 | 2018-02-11 14:33:00 | 2018-02-11 14:35:30 |
| 2 | 2 | "B" | 1 | 3 | 4 | 2018-02-11 14:29:00 | 2018-02-11 14:31:30 |
| 3 | 3 | "A" | 2 | 2 | 1 | 2018-02-12 08:44:00 | 2018-02-12 08:51:30 |

关于python - 组合/合并排序的 pandas 数据框中的时间间隔行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60027564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com