检查数据帧的最后一行是否满足一组条件的最佳方法是什么?

2024-09-28 18:48:55 发布

您现在位置:Python中文网/ 问答频道 /正文

此问题是以下问题的后续问题: What is the best way to check if the last rows of a pandas dataframe meet a condition?

但我在试图修改提供的答案以满足我的需求时遇到了困难

Criteria 01=如果singal的最后五(5)个连续行(包括最后一行)是1,它将返回1

Criteria 02=如果singal的最后三(3)个连续行(包括最后一行)为0,则返回0

Criteria 03=在第一次满足条件01或条件02之前,它将返回nan

标准04=其他所有内容都将是最后一个检查值

像这样:

index   signal  check
0       1       nan
1       1       nan
2       1       nan
3       1       nan
4       1       1
5       1       1
6       0       1
7       0       1
8       0       0
9       0       0
10      0       0
11      1       0
12      0       0
13      1       0
14      0       0
15      1       0
16      1       0
17      1       0
18      1       0
19      1       1

我将感谢任何帮助

谢谢大家!


Tags: ofthetopandasifischecknan
2条回答

首先选择dataframe的最后5行并选择列,然后检查所有结果是否等于某个值(即:1表示条件1)

import numpy as np if np.all(df[-5:]['signal'] == 1): print('CRITERIA 01 is met')

然后你可以建立其他类似的标准

您需要另一个rolling(3),如下所示

m1 = df.rolling(5).sum().eq(5)
m2 = df.eq(0).rolling(3).sum().eq(3)
df['check'] = df[m1 | m2].ffill()

Out[310]:
       signal  check
index
0           1    NaN
1           1    NaN
2           1    NaN
3           1    NaN
4           1    1.0
5           1    1.0
6           0    1.0
7           0    1.0
8           0    0.0
9           0    0.0
10          0    0.0
11          0    0.0
12          0    0.0
13          1    0.0
14          0    0.0
15          1    0.0
16          1    0.0
17          1    0.0
18          1    0.0
19          1    1.0

掩码m2也可以简化为这样

m2 = df.rolling(3).sum().eq(0)

相关问题 更多 >