Python 列中紧跟其后的值的计数
我需要计算重绘值,并在重绘值发生3次后声明一个条件。 这是我的数据集: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
偏差条件
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')