Как выбрать только строки со значениями выше порога? - PullRequest
0 голосов
/ 04 октября 2018

Допустим, у меня есть следующий фрейм данных.

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. Так что в приведенном выше случае, я быget.

          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 голосов
/ 04 октября 2018

Вы можете использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...