python - 通过移动 n 个数据点来查找最小值
问题描述
我有以下数据框:
num
Out[89]:
Date
2015-07-06 33
2015-07-07 20
2015-07-08 4
2015-07-09 3
2015-07-10 8
..
2020-06-29 14
2020-06-30 13
2020-07-01 18
2020-07-02 20
2020-07-03 28
Length: 1228, dtype: int64
我想num.lt(5)
每天都在轮班的基础上应用一些东西n
。例如,如果它能够找到 5,但是在出现 4 和 3 的较低值之后的第二天,那么在间隔 3 天的时间间隔内,它会记录值 3。所以基本上应该发生的事情是小于 5,但是最低值在接下来的 3 天内最低。我怎样才能做到这一点?
例如 :
Date
2015-07-06 33
2015-07-07 20
2015-07-08 4
2015-07-09 3
2015-07-10 8
在日期2015-07-08
,它的值为 4,如果我使用它是正确的,lt(5)
但在它有 3 的第二天。我希望它记录 3 而不是 4 和 3,因为 3 是最低值。它应该每隔 3 天检查一次。因此,如果它开始检查条件,2015-07-08
它应该检查接下来 3 天的最低值,即 until 2015-07-11
。你能建议这样做吗?
编辑:
因此,无论哪里lt(5)
是真的,都将是起点,接下来的 3 天是需要找到最低值的地方。搜索应该只在下一个起点的间隔结束时开始lt(5)
解决方案
我的猜测是你需要索引。一旦你得到了这些,你就可以随心所欲地操纵数据。
df = pd.DataFrame(data = {
"data":[3, 2, 77, 655, 4, 5, 444, 5, 444, 5, 456, 456, 45, 34, 34, 88]
})
a = 0
increment = 3
b = increment
l = []
while b<df.shape[0]:
a = df.iloc[a:b, 0].idxmin() + 1
l.append(a)
b = a + increment
print(l)
[2, 5, 6, 8, 10, 13] #for increment =3
推荐阅读
- html - 如何将占屏幕 90% 的导航栏居中
- angular - 动态替换CKEditor5
- javascript - 在 Angular 中声明和更改全局变量?
- swiftui - SwiftUI - 打开视图时的数组默认值
- nginx - 未知指令“位置/”(在服务器块内)
- python - 需要从外部硬盘使用 python
- c++11 - 我可以使用已删除指针的名称吗?
- javascript - Nightwatch/Cucumber - 场景大纲和示例表不起作用
- pytorch - NameError:名称“utils”未在 Pytorch 中定义
- python - TensorFlow-GPU 不会运行 GPU