我有一个df
,
ID Machine 17-Dec 18-Jan 18-Feb 18-Mar 18-Apr 18-May
160 Car 348 280 274 265 180 224
163 Var 68248 72013 55441 64505 71097 78006
165 Assus 1337 1279 1536 1461 1555 1700
215 Owen 118 147 104 143 115 153
我计算均值和标准差。这样的开发人员,
df['Avg'] = np.mean(all_np_values, axis=1)
df['Std.Dev'] = np.std(all_np_values, axis=1)
然后我得到以下数据框。
ID Machine 17-Dec 18-Jan 18-Feb 18-Mar 18-Apr 18-May Mean Std.Dev
160 Car 348 280 274 265 180 224 261.83 51.70
163 Var 68248 72013 55441 64505 71097 78006 68218.33 7018.24
165 Assus 1337 1279 1536 1461 1555 1700 1478 140.44
215 Owen 118 147 104 143 115 153 130 18.40
现在,我想拥有一个如下所示的最终数据框,我想看一下MAY 18
,并根据其值{{1}说yes
或no
}或Above
2个标准差。
Below
我尝试执行以下操作
ID Machine 17-Dec 18-Jan 18-Feb 18-Mar 18-Apr 18-May Mean Std.Dev Above Below
160 Car 348 280 274 265 180 224 261.83 51.70 No No
163 Var 68248 72013 55441 64505 71097 78006 68218.33 7018.24 No No
165 Assus 1337 1279 1536 1461 1555 1700 1478 140.44 No No
215 Owen 118 147 104 143 115 153 130 18.40 No No
这给了我error:
ValueError:系列的真值不明确。使用空 a.bool(),a.item(),a.any()或a.all()。
在阅读了一些较旧的文章后,我理解了该错误。我的结论是,它返回 for value in df['18-May']:
if value > (df['Avg'] + 2 * df['Std.Dev']):
df['Above'] = 'Yes'
else:
df['Above'] = 'No'
个值进行比较。
不确定,如何bool
创建新的mask
列以在“之上”或“之下”列中创建“是”和“否”。如何将其添加到上面的代码中?
任何想法都会有所帮助。