我正在尝试为下面描述的情况找到最快、最优雅的解决方案。
我有一个大的 DataFrame,其中包含一些机器状态的记录。对于这个例子,假设我们只有两台机器:one
和two
(实际上我有更多,但这不重要)。每台机器都可以处于以下两种状态之一:up
和down
。
以下是如何创建示例记录:
import pandas as pd
df = pd.DataFrame({'time' : range(8),
'machine' : ["one","one","two","two","one","two","two","one"],
'status' : ["up","down","up","down","up","up","down","down"]})
以及它的样子:
time machine status
0 one up
1 one down
2 two up
3 two down
4 one up
5 two up
6 two down
7 one down
记录是严格排序的(实际上是按时间戳)。
现在,我想要实现的是找到两台机器都处于高状态(up
)的情况,并且最好返回 DataFrame 的一个子集,以显示这种情况。在上面的示例中,时间5
和之间的子集6
对我来说很有趣,因为当时one
和two
机器都处于up
状态。
蛮力解决方案可能是遍历数据框并将所有机器的状态存储在一个列表中,在每次迭代期间检查我们是否有两个处于一个状态up
,但也许有更优雅的解决方案?
所有建议都非常受欢迎。