使用掩码添加计算列以绕过ValueError

时间:2018-08-21 17:59:22

标签: python-3.x pandas comparison

我有一个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}说yesno }或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列以在“之上”或“之下”列中创建“是”和“否”。如何将其添加到上面的代码中?

任何想法都会有所帮助。

0 个答案:

没有答案