我想按组的方式基于99%分位数来移除离群值。
import pandas as pd
df = pd.DataFrame({'Group': ['A','A','A','B','B','B','B'], 'count': [1.1,11.2,1.1,3.3,3.40,3.3,100.0]})
在输出结果中,我希望从A组中删除11.2,在B组中删除100。因此,在最终数据集中只会有5个观测值。
wantdf = pd.DataFrame({'Group': ['A','A','B','B','B'], 'count': [1.1,1.1,3.3,3.40,3.3]})
我已经尝试了这个方法,但是没有得到期望的结果。
df[df.groupby("Group")['count'].transform(lambda x : (x<x.quantile(0.99))&(x>(x.quantile(0.01)))).eq(1)]
df.groupby('Group')['count'].transform(lambda x : x<=x.quantile(0.001))
- BENY