我有很多这样的系列赛:
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行或更多的负行。因此,对于这个系列的预期输出:
True 否则,在本系列中没有一个接一个的5行负行。
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预期产出:
False 我知道如何迭代这个系列。这可以通过迭代来完成。
但是我需要快速的熊猫来完成它。我的系列很大。也许有一种方法在罩下。
发布于 2021-01-03 20:08:38
使用rolling和sum,以及任何大于或等于5的检查。
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发布于 2021-01-03 19:54:22
试试这个掩蔽和总结:):
sr = ... #your data Series
bool_sr = sr < 0
has_5 = ((bool_sr == True) & (bool_sr.shift(1) ==True)).sum() >= 5https://stackoverflow.com/questions/65554186
复制相似问题