[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

    ....