[Pandas] 원하는 값으로 필터링

반응형
반응형

데이터프레임에서 특정조건의 데이터를 필터링하는 2가지 방법을 소개하겠습니다.

 

  1. isin()을 이용하는 방법
  2. 비교 조건문을 이용하는 방법

 

다음과 같이 소문자, 대문자로 이루어진 데이터프레임을 만들었습니다.

df = pd.DataFrame({'alpha' : ['a','b','c','d','e'],'beta':['A','B','C','D','E']})
df

 

isin()을 이용하는 방법

isin()을 하면 해당 원소가 있는지를 판단해줍니다.

즉, 해당 값이 있으면 True, 없으면 False를 반환합니다.

df['alpha'].isin(['a','b'])

 

이것을 이용하면 필터링이 가능합니다.

df[df['alpha'].isin(['a','b'])]

 

and(&),or(|) 도 가능합니다.

df[df['alpha'].isin(['a','b']) & df['beta'].isin(['A'])]

df[df['alpha'].isin(['a','b']) | df['beta'].isin(['A','B','C'])]

 

비교 조건문을 이용하는 방법

이번엔 비교 조건문을 사용하는 방법인데 일일이 다 써야하는 불편함이 있지만 isin 처럼 판다스의 메쏘드가 아닌 

파이썬의 내장기능이므로 다양하게 쓸 수 있습니다.

 

위에서 했던 예제와 같은 결과가 나오게끔 해보겠습니다.

 

df[(df['alpha']=='a') | (df['alpha']=='b') & (df['beta']=='A') & (df['beta']=='B') & (df['beta']=='C')]

 

df[(df['alpha']=='a') | (df['alpha']=='b') | (df['beta']=='A') | (df['beta']=='B') | (df['beta']=='C')]

 

수학시간에 배운 집합의 개념과 같습니다. and와 or를 가지고 필터링을 할 수 있습니다. 

주의해야할 것은 조건문마다 괄호를 반드시 해야 합니다.

안 그러면 오류가 나옵니다. 

df[(df['alpha']=='a') | (df['alpha']=='b') & (df['beta']=='A') & df['beta']=='B'& (df['beta']=='C')]

 

필터링하는 방법 2가지를 알아보았는데요.

도움이 되셨으면 좋겠습니다.

 

 

관련 포스팅

[Python/Pandas] - [Pandas] DataFrame 결측치(NaN) 처리

[Python/Pandas] - [Pandas] DataFrame 시간 인덱스 나누기

 

데이터목장님의
글이 좋았다면 응원을 보내주세요!

Designed by JB FACTORY