我有输入dataframe其中有3列时间,名称,标志。我想聚合成一个开始和结束列,其中Name
和Flag
具有相同的值。
输入 Dataframe
| 时间|姓名|旗|
| --------------|--------------|--------------|
| 2023年5月1日1:01|彼得|1|
| 2023年5月1日1:02|彼得|1|
| 2023年5月1日1:03|彼得|1|
| 2023年5月1日1:04|彼得|0|
| 2023年5月1日1:05|彼得|0|
| 2023年5月1日1:06|彼得|1|
| 2023年5月1日1:07|彼得|1|
| 2023年5月1日1:08|彼得|1|
| 2023年5月1日1:01|约翰|1|
| 2023年5月1日1:02|约翰|0|
| 2023年5月1日1:03|约翰|0|
| 2023年5月1日1:04|约翰|0|
| 2023年5月1日1:05|约翰|0|
| 2023年5月1日1:06|约翰|0|
| 2023年5月1日1:07|约翰|1|
| 2023年5月1日1:08|约翰|1|
| 2023年5月2日1:10|彼得|1|
| 2023年5月2日1:11|彼得|1|
| 2023年5月2日1:20|约翰|0|
| 2023年5月2日1:21|约翰|0|
| 2023年5月2日1:22|约翰|0|
输出 Dataframe
| 开始|结束|姓名|旗|
| --------------|--------------|--------------|--------------|
| 2023年5月1日1:01| 2023年5月1日1:03|彼得|1|
| 2023年5月1日1:04| 2023年5月1日1:05|彼得|0|
| 2023年5月1日1:06| 2023年5月1日1:08|彼得|1|
| 2023年5月2日1:10| 2023年5月2日1:11|彼得|1|
| 2023年5月1日1:01| 2023年5月1日1:01|约翰|1|
| 2023年5月1日1:02| 2023年5月1日1:06|约翰|0|
| 2023年5月1日1:07| 2023年5月1日1:08|约翰|1|
| 2023年5月2日1:20| 2023年5月2日1:22|约翰|0|
在这种情况下,连续的行意味着在时间上连续。
1:08和1:10未合并,因为行1:08和1:10之间存在间隙(缺少1:09
你能告诉我怎么做吗?
1条答案
按热度按时间bbmckpt71#
首先,您要创建符合条件的分组。要创建它,一般的提示是创建一个标志,当你想要分离一个组时,标志为1,当你想要合并到前一个组时,标志为0。然后,cumsum在这个标志将导致你想要的分组。
你的条件是
在这些条件下,将分组创建为
grp
列,并使用该列进行聚合。