Согласно Насколько нам известно, спасибо @Phung Duy Phong
за указание на логи c.
, прикольное веселье c должно выглядеть так, чтобы ускорить производительность в групповом * 1004. *
def is_outlier(x):
return (x<x.quantile(0.95))&(x>(x.quantile(0.05)))
и оператор groupby должен выглядеть следующим образом
df[df.groupby(['channel'])['cnt_txn','amount'].apply(is_outlier).eq(1).all(axis=1)]
отметил, что .eq(1)
упрощает результат до True
и False
вместо значения Nan
и .all(axis=1)
предназначены для объединения возвращаемого массива в одно измерение, в котором все столбцы должны иметь значение true
, равное true
и, наконец, df[arrayOfTrueFalse]
вернет кадр данных без выброса