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