从 Pandas 数据框中过滤除一列以外的所有列的异常值

Filter outliers from Pandas dataframe from all columns except one

假设我有一个包含特征和标签的数据框:

f1    f2   label
-1000 -100 1
-5    3    2
0     4    3
1     5    1
3     6    1
1000  100  2

我想从 f1 和 f2 列中过滤异常值以获得:

f1    f2   label
-5    3    2
0     4    3
1     5    1
3     6    1

我知道我可以做这样的事情:

data = data[(data > data.quantile(.05)) & ( data < data.quantile(.95))]

但 'label' 列也将被过滤。如何避免过滤某些列?我不想手动过滤所有列,因为它们有几十个。 谢谢

下面的方法呢:

In [306]: x = data.drop('label', 1)

In [307]: x.columns
Out[307]: Index(['f1', 'f2'], dtype='object')

In [308]: data[((x > x.quantile(.05)) & (x < x.quantile(.95))).all(1)]
Out[308]:
   f1  f2  label
1  -5   3      2
2   0   4      3
3   1   5      1
4   3   6      1