检查值是不是是上一个、当前和下一个值的最大值/最小值
Posted
技术标签:
【中文标题】检查值是不是是上一个、当前和下一个值的最大值/最小值【英文标题】:Check if value is maximum/minimum of previous, current and next value检查值是否是上一个、当前和下一个值的最大值/最小值 【发布时间】:2022-01-18 10:21:56 【问题描述】:我有一个时间序列数据框,我想列出连续三天中 High 是 第二天 最高的日子,但同样的事情低的值是第二天的最低值。 我尝试了这两行,但我在查看数据后硬编码了日期。我想知道是否有办法不对其进行硬编码。
df_highest = df.loc['1986-03-17':'1986-03-19', 'High'].max()
df_lowest= df.loc['1986-03-24':'1986-03-26', 'Low'].min()
这是一段数据。
【问题讨论】:
我建议将您的标题更改为更具体的问题,例如:“检查值是否为上一个、当前和下一个值的最大值/最小值” 【参考方案1】:尝试将diff
函数与大于(gt
)或小于(lt
)结合使用:
(df['High'].diff().gt(0)) & (df['High'].diff(-1).gt(0))
(df['Low'].diff().lt(0)) & (df['Low'].diff(-1).lt(0))
在您的屏幕截图示例中,这只会导致一系列 False 值。
如果您还想在第二天的值等于前一天/后一天的情况下返回 True,您还可以使用大于或等于 (ge
) 或小于或等于 (le
)。
例如,1986 年 3 月 17 日的高值等于 1986 年 3 月 18 日的下一个高值。或 1986 年 3 月 24 日/1986 年 3 月 25 日的低点。
这将为提到的日期创建一个 True 值。
【讨论】:
非常感谢您的帮助!我的想法几乎相同,但没有找到适合它的功能! diff 功能很棒。以上是关于检查值是不是是上一个、当前和下一个值的最大值/最小值的主要内容,如果未能解决你的问题,请参考以下文章
python 循环遍历迭代的前一个,当前值和下一个值的Helper方法
在 MySQL 中是不是可以找到最小值/最大值但首先删除异常值?