让我们说我有以下数据框。
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]
答案 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