본문 바로가기
5-3. Pandas 제공 자료구조/DataFrame 인덱싱 관련

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

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

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

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


10보다 큰 값이 하나라도 있는 행만 남겨봅시다. 먼저 각 행에 10보다 큰 값이 하나라도 있는지 any 메소드로 확인하면 아래와 같습니다.

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


위 결과를 인덱스로 사용하면 됩니다. 위 결과는 시리즈이기 때문에 데이터프레임에 인덱스로 사용될 경우 행별로 적용됩니다. 

>>> md[(np.abs(md)>10).any(1)]
           0         1         2          3
2   5.657393  0.934987 -5.718441 -14.554492
3  12.434857  3.076518  6.976670  -7.875882
4   2.309404  9.409397 -0.375721  16.651236
6 -11.689458 -9.518975  8.805354  13.744177
8  -2.565431  3.997110  5.824812 -10.737718
9 -23.481604 -9.194257  6.222753  12.427558

 

any 대신 all을 사용하면 모든 원소가 10보다 커야 True를 반환합니다. 

반응형

댓글