我一直试图以最有效的方式过滤掉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
答案 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和stdsales_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.]