Pandas 查找数据库中不同项目在特定日期内的最大值

Pandas 查找数据库中不同项目在特定日期内的最大值,pandas,dataframe,Pandas,Dataframe,我提取了一年中超过1300种证券的证券价格细节。看起来像这样 它包含以下列-一个数据框中所有证券的日期符号关闭,大约200个交易日 我想知道证券的最后价格是否是不同时间范围内的最高价格——7天、25天、100天等等,对于所有这1300种证券。因此,假设今天的收盘价可能是过去7天的最大值,但不是25天。然后我需要在7天列中为真,在25天列中为假 我无法找出上面的循环。不确定您的整个数据结构是什么样子,但对于单个安全性,您可以使用rolling(): df: Close 20

我提取了一年中超过1300种证券的证券价格细节。看起来像这样

它包含以下列-一个数据框中所有证券的日期符号关闭,大约200个交易日

我想知道证券的最后价格是否是不同时间范围内的最高价格——7天、25天、100天等等,对于所有这1300种证券。因此,假设今天的收盘价可能是过去7天的最大值,但不是25天。然后我需要在7天列中为真,在25天列中为假


我无法找出上面的循环。

不确定您的整个数据结构是什么样子,但对于单个安全性,您可以使用
rolling()

df:

            Close
2021-03-01  10
2021-03-02  13
2021-03-03  21
2021-03-04  12
2021-03-05  16
2021-03-08  13
2021-03-09  17
2021-03-10  20
2021-03-11  18
2021-03-12  15
2021-03-15  22
2021-03-16  20
            Close   max2   max4   max6
2021-03-01     10  False  False  False
2021-03-02     13   True  False  False
2021-03-03     21   True  False  False
2021-03-04     12  False  False  False
2021-03-05     16   True  False  False
2021-03-08     13  False  False  False
2021-03-09     17   True   True  False
2021-03-10     20   True   True  False
2021-03-11     18  False  False  False
2021-03-12     15  False  False  False
2021-03-15     22   True   True   True
2021-03-16     20  False  False  False
使用滚动可以获得最后n个值的
max()

df['Close'].rolling(4).max()

2021-03-01     NaN
2021-03-02     NaN
2021-03-03     NaN
2021-03-04    21.0
2021-03-05    21.0
2021-03-08    21.0
2021-03-09    17.0
2021-03-10    20.0
2021-03-11    20.0
2021-03-12    20.0
2021-03-15    22.0
2021-03-16    22.0
这样,您就可以获得所需的真/假输入(我使用2、4和6个窗口大小进行说明-您需要调整为7、25、100等):

df:

            Close
2021-03-01  10
2021-03-02  13
2021-03-03  21
2021-03-04  12
2021-03-05  16
2021-03-08  13
2021-03-09  17
2021-03-10  20
2021-03-11  18
2021-03-12  15
2021-03-15  22
2021-03-16  20
            Close   max2   max4   max6
2021-03-01     10  False  False  False
2021-03-02     13   True  False  False
2021-03-03     21   True  False  False
2021-03-04     12  False  False  False
2021-03-05     16   True  False  False
2021-03-08     13  False  False  False
2021-03-09     17   True   True  False
2021-03-10     20   True   True  False
2021-03-11     18  False  False  False
2021-03-12     15  False  False  False
2021-03-15     22   True   True   True
2021-03-16     20  False  False  False

重要的是要注意,例如,在这种情况下,滚动(6)需要6个以前的值才能工作。如果6不存在,则返回NaN。换句话说,在有6个值可供查看之前,您将得到False。虽然这可以用
min\u periods
参数配置。

非常感谢。让我试试这个,看看它是否像预期的那样工作。根据我所看到的,看起来不错。谢谢。