在 Pandas 数据框中查找段

Find segments in Pandas dataframe

我想找到由一些布尔值指示的段的开始和结束时间戳。 数据框如下所示:

t
2021-06-19 21:29:38     True
2021-06-19 21:29:48     True
2021-06-19 21:29:58     True
2021-06-19 21:30:08    False
2021-06-19 21:30:18    False
2021-06-19 21:30:28    False
2021-06-19 21:30:38    False
2021-06-19 21:30:48    False
2021-06-19 21:30:58     True
2021-06-19 21:31:08     True
2021-06-19 21:31:18     True
2021-06-19 21:31:28     True
2021-06-19 21:31:38     True
2021-06-19 21:31:48     True
2021-06-19 21:31:58     True
2021-06-19 21:32:08     True
2021-06-19 21:32:18     True
2021-06-19 21:32:28     True
2021-06-19 21:32:38     True
2021-06-19 21:32:48     True
Name: AT, dtype: bool

现在我需要提取两个片段。第一个是从 21:29:38 到 21:29:58,第二个是从 21:30:58 到 21:32:48。有什么办法可以做到这一点? 我尝试过滤 True 值,但后来我错过了我不想包括的时间范围。

在否定条件上使用cumsum()

for group, data in s[s].groupby((~s).cumsum()):
    print(data)

输出:

t
2021-06-19 21:29:38    True
2021-06-19 21:29:48    True
2021-06-19 21:29:58    True
Name: AT, dtype: bool
t
2021-06-19 21:30:58    True
2021-06-19 21:31:08    True
2021-06-19 21:31:18    True
2021-06-19 21:31:28    True
2021-06-19 21:31:38    True
2021-06-19 21:31:48    True
2021-06-19 21:31:58    True
2021-06-19 21:32:08    True
2021-06-19 21:32:18    True
2021-06-19 21:32:28    True
2021-06-19 21:32:38    True
2021-06-19 21:32:48    True
Name: AT, dtype: bool