首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个接一个地检查系列赛是否有许多不好的结果

一个接一个地检查系列赛是否有许多不好的结果
EN

Stack Overflow用户
提问于 2021-01-03 19:44:36
回答 2查看 42关注 0票数 0

我有很多这样的系列赛:

代码语言:javascript
复制
0   0.1
1   -0.1
2   -0.2
3   0.14
4   0.17
5   -0.34
6   -0.78
7   -0.22
8   -0.9
9   -0.01
10  0.12
11  0.13
12  0.22
13  -0.24
14  -0.44
15  -0.91

我想一个接一个地检查是否有5行或更多的负行。因此,对于这个系列的预期输出:

代码语言:javascript
复制
True          

否则,在本系列中没有一个接一个的5行负行。

代码语言:javascript
复制
0   0.14
1   0.15
2   -0.24
3   0.11
4   0.17
5   0.31
6   -0.79
7   0.22
8   -0.91
9   0.11
10  0.22
11  0.34
12  0.12
13  -0.44
14  -0.14
15  0.31

预期产出:

代码语言:javascript
复制
False              

我知道如何迭代这个系列。这可以通过迭代来完成。

但是我需要快速的熊猫来完成它。我的系列很大。也许有一种方法在罩下。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-03 20:08:38

使用rollingsum,以及任何大于或等于5的检查。

代码语言:javascript
复制
import pandas as pd    

s = pd.Series([0.1,-0.1,-0.2,0.14,0.17,-0.34,-0.78,-0.22,-0.9,-0.01,0.12,0.13,0.22,-0.24,-0.44,-0.91])

((s < 0).rolling(5).sum() >= 5).any()
>>> True
票数 1
EN

Stack Overflow用户

发布于 2021-01-03 19:54:22

试试这个掩蔽和总结:):

代码语言:javascript
复制
sr = ... #your data Series
bool_sr = sr < 0
has_5 = ((bool_sr == True) & (bool_sr.shift(1) ==True)).sum() >= 5
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65554186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档