我有一个时间序列数据框,我想列出连续三天的日子,高是第二天最高的,但同样的事情Low 的值是第二天 的最低值。 我尝试了这两行,但我在查看数据后对日期进行了硬编码。我想知道是否有办法不对其进行硬编码。
df_highest = df.loc['1986-03-17':'1986-03-19', 'High'].max()
df_lowest= df.loc['1986-03-24':'1986-03-26', '低'].min()
这是一段数据。
最佳答案
尝试结合大于 (gt
) 或小于 (lt
) 的 diff
函数:
(df['High'].diff().gt(0)) & (df['High'].diff(-1).gt(0))
(df['Low'].diff().lt(0)) & (df['Low'].diff(-1).lt(0))
在您的屏幕截图示例中,这只会导致一系列错误值。
你也可以使用大于或等于(ge
)或小于或等于(le
),如果你还想在第二天的值等于到前一天/后一天。
例如,1986-03-17 日的最高价等于 1986-03-18 日的下一个最高价。或 1986-03-24/1986-03-25 低点。
这将为提到的日期创建一个 True 值。
关于python - 检查值是否是前一个值、当前值和下一个值的最大值/最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70360178/