过滤std的结果远离平均值

时间:2018-03-14 21:32:07

标签: python pandas

我一直试图以最有效的方式过滤掉std的结果

DF

 Cashier# Store Sales_ct Refunds_ct   
 001      001   100      10
 002      001   200      9
 003      001   900      8
 004      002   200      10
 005      002   400      9 
 006      002   200      8

如何获得距离返回平均值2秒的结果

 Cashier# Store Sales_ct Refunds_ct  sales_std_away_mean 
 003      001   900      8

2 个答案:

答案 0 :(得分:3)

def abs_z(s):
    return s.sub(s.mean()).div(s.std(ddof=0)).abs()

df[abs_z(df.Sales_ct).ge(2)]

   Cashier#  Store  Sales_ct  Refunds_ct
2         3      1       900           8

答案 1 :(得分:2)

可以使用

计算Sales_ct列的mean和std
sales_mean = np.mean(df.Sales_ct)
sales_std = np.std(df.Sales_ct)

然后按照您的说法创建一个新列

df['sales_std_away_mean'] = np.abs((df.Sales_ct - sales_mean)/sales_std)

然后切片以选择高于阈值的行:

subdf = df[df.sales_std_away_mean > 2.]