检查值是不是是上一个、当前和下一个值的最大值/最小值

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 中是不是可以找到最小值/最大值但首先删除异常值?

使用分治法是不是会提高在数组中查找最大值和最小值的时间复杂度

取最大值(最小值)简介代码

mysql分页优化

Python - 如何在列表中查找不是最小值的数字