如何仅选择值超过阈值的行?

时间:2018-10-04 01:32:47

标签: python pandas

让我们说我有以下数据框。

np.random.seed(0)  # Add seed to reproduce results. 
df = pd.DataFrame(np.random.randn(6,4), columns=list('ABCD'))
df['id'] = ['CA', 'CA', 'CA', 'FL', 'FL', 'FL']
df['technique'] = ['one', 'two', 'three', 'one', 'two', 'three']
df

          A         B         C         D  id technique
0  1.764052  0.400157  0.978738  2.240893  CA       one
1  1.867558 -0.977278  0.950088 -0.151357  CA       two
2 -0.103219  0.410599  0.144044  1.454274  CA     three
3  0.761038  0.121675  0.443863  0.333674  FL       one
4  1.494079 -0.205158  0.313068 -0.854096  FL       two
5 -2.552990  0.653619  0.864436 -0.742165  FL     three

当任何列的值大于2时,我只想选择那些行。因此,在上述情况下,我会得到。

          A         B         C         D  id technique
0  1.764052  0.400157  0.978738  2.240893  CA       one
5 -2.552990  0.653619  0.864436 -0.742165  FL     three

如何在不进行以下操作的情况下跨多个列进行过滤。

df[df.A >= 2 | df.B >= 2 | df.C >= 2 | df.D >= 2]

1 个答案:

答案 0 :(得分:3)

您可以使用any

df[df.loc[:,'A':'D'].abs().gt(2).any(1)]
Out[219]: 
          A         B         C         D  id technique
0  1.764052  0.400157  0.978738  2.240893  CA       one
5 -2.552990  0.653619  0.864436 -0.742165  FL     three