Python 列中紧跟其后的值的计数

Python 列中紧跟其后的值的计数,python,pandas,Python,Pandas,我需要计算重绘值,并在重绘值发生3次后声明一个条件。 这是我的数据集: 偏差条件 0.1.875正常值 2 0.625正常值 3000正常 4.1.250正常 51875正常 6000正常 7.10000异常 82000异常 9.30.000异常 10.40万异常 11.5万异常 1260000异常 1370.000异常 1480000异常 1590000异常 如果异常出现3次,则我要声明失败您可以使用计数连续异常的数量,并将结果映射到感兴趣的值: df['state'] = (df.Cond

我需要计算重绘值,并在重绘值发生3次后声明一个条件。 这是我的数据集:

偏差条件
0.1.875正常值
2 0.625正常值
3000正常
4.1.250正常
51875正常
6000正常
7.10000异常
82000异常
9.30.000异常
10.40万异常
11.5万异常
1260000异常
1370.000异常
1480000异常
1590000异常
如果异常出现3次,则我要声明失败

您可以使用计数连续异常的数量,并将结果映射到感兴趣的值:

df['state'] = (df.Condition.eq('Abnormal')
                 .rolling(window=3, center=False).apply(all)
                 .map({0:'Success', 1:'Failure'})
                 .fillna('Success'))

您可以使用来计算连续
异常的数量,并将结果映射到感兴趣的值:

df['state'] = (df.Condition.eq('Abnormal')
                 .rolling(window=3, center=False).apply(all)
                 .map({0:'Success', 1:'Failure'})
                 .fillna('Success'))

使用+

使用+


如果你在问题中发布到目前为止你已经尝试过的东西会有帮助…如果你在问题中发布到目前为止你已经尝试过的东西会有帮助。。。
n = 3
df['state'] = (df['Condition'].where(df['Condition'].eq('Normal'))
                              .ffill(limit = n-1)
                          .replace('Normal','Success')
                          .fillna('Failure'))
print(df)
    Deviation Condition    state
0       1.875    Normal  Success
2       0.625    Normal  Success
3       0.000    Normal  Success
4       1.250    Normal  Success
5       1.875    Normal  Success
6       0.000    Normal  Success
7      10.000  Abnormal  Success
8      20.000  Abnormal  Success
9      30.000  Abnormal  Failure
10     40.000  Abnormal  Failure
11     50.000  Abnormal  Failure
12     60.000  Abnormal  Failure
13     70.000  Abnormal  Failure
14     80.000  Abnormal  Failure
15     90.000  Abnormal  Failure
n = 3
m = (df['Condition'].eq('Abnormal')
                    .groupby(df['Condition'].ne(df['Condition'].shift()).cumsum())
                    .cumsum()
                    .gt(n-1))
df['state'] = np.where(m,'Failure','Success')