본문 바로가기
5-3. Pandas 제공 자료구조/DataFrame

[파이썬 판다스] 데이터프레임 특정 조건을 만족하는지 확인하기(any, all)

by 만다린망고 2022. 2. 8.
반응형

먼저 데이터를 하나 생성합시다. 

import pandas as pd
import numpy as np

md = pd.DataFrame(10*np.random.randn(10, 4))

>>> md
           0          1          2          3
0   4.538928  -5.226503  10.369977   6.726804
1  10.371321   6.897509  -9.493601 -21.909799
2  10.575935  -2.771346   7.853494  -1.184277
3   3.363696  -0.878508   2.587997  -8.812833
4   9.401511  33.617850 -12.975039  -8.628830
5   8.581020  18.303396   0.752900   8.202389
6  -0.521181   2.607637   5.511367  21.172351
7   1.393362  10.765882  -8.555743   6.831867
8 -16.383808 -16.587397   1.303840  -5.946344
9 -12.784697 -14.566051  -6.551942  -8.970884


먼저 각 원소가 2보다 큰지 여부를 알아봅시다. 

>>> np.abs(md)>2 
       0      1      2      3
0   True   True   True   True
1   True   True   True   True
2   True   True   True  False
3   True  False   True   True
4   True   True   True   True
5   True   True  False   True
6  False   True   True   True
7  False   True   True   True
8   True   True  False   True
9   True   True   True   True


만약 2보다 큰 원소를 포함하는 행이 존재하는지, 열이 존재하는지 여부를 알고 싶으면 어떻게 해야할까요? 이런 경우 사용하는 메소드가 any와 all 입니다. 사용방법은 둘다 같습니다.

any(axis)
all(axis)

axis=0 은 열방향(위->아래), axis=1 은 행방향(좌->우)입니다. 

any 는 해당되는 값이 하나라도 있으면 True를 반환하고, all 은 모두 해당되어야 True를 반환합니다.

각 열이 2보다 큰 원소 조건을 만족하는지 알아봅시다. any 는 2보다 큰 원소가 하나라도 있으면 True를 반환합니다. 

>>> (np.abs(md)>2).any(0)
0    True
1    True
2    True
3    True

>>> (np.abs(md)>2).all(0)
0    False
1    False
2    False
3    False
dtype: bool


각 행이 2보다 큰 원소조건을 만족하는지 알아봅시다. 

>>> (np.abs(md)>2).any(1)
0    True
1    True
2    True
3    True
4    True
5    True
6    True
7    True
8    True
9    True
dtype: bool

>>> (np.abs(md)>2).all(1)
0     True
1     True
2    False
3    False
4     True
5    False
6    False
7    False
8    False
9     True
dtype: bool
반응형

댓글