在pandas timeseries数据帧中查找条件以来的最大值

use*_*205 5 python numpy pandas

我试图找到最大值,因为在熊猫数据帧中条件是真的.我已经搜索了类似的问题并阅读了文档,但未能找到这个问题.为了说明,我想要一个将返回下面的maxsince列的函数.

In [84]: df
Out[84]: 
                     a      b  maxsince
2007-04-27 11:00:00  1   True         1
2007-04-27 11:30:00  5  False         5
2007-04-27 12:00:00  3  False         5
2007-04-27 12:30:00  2   True         2
2007-04-27 13:00:00  2  False         2
2007-04-27 13:30:00  7   True         7
2007-04-27 14:00:00  3  False         7
2007-04-27 14:30:00  4  False         7
Run Code Online (Sandbox Code Playgroud)

我无法通过循环计算这个问题.什么是最有效的方式?谢谢.

DSM*_*DSM 11

怎么样:

>>> df.groupby(df["b"].cumsum())["a"].cummax()
2007-04-27  11:00:00    1
            11:30:00    5
            12:00:00    5
            12:30:00    2
            13:00:00    2
            13:30:00    7
            14:00:00    7
            14:30:00    7
dtype: int64
Run Code Online (Sandbox Code Playgroud)

这是因为

>>> df["b"].cumsum()
2007-04-27  11:00:00    1
            11:30:00    1
            12:00:00    1
            12:30:00    2
            13:00:00    2
            13:30:00    3
            14:00:00    3
            14:30:00    3
Name: b, dtype: int32
Run Code Online (Sandbox Code Playgroud)

给我们,每当我们看到了一个新的价值True.根据你想要在第一个值发生时想要发生什么,你可能需要修补它False,但我会把它作为读者的练习.; ^)