Python/Pandas

[Pandas] 파이썬 판다스 isin 함수 및 not isin 조건 사용 방법

jimmy_AI 2022. 9. 18. 23:13
반응형

Python pandas isin / not isin

파이썬의 판다스 라이브러리에서 특정 목록 중에 있는 값들을 조회하고 싶은 경우

유용하게 사용할 수 있는 함수인 isin과 isin 함수의 반대 조건에 대한 사용 방법을

정리해보도록 하겠습니다.

 

이해를 돕기 위해서 다음과 같은 간단한 데이터프레임 df를 예시로 들어 설명하겠습니다.

import pandas as pd

a = {"반" : [1, 1, 2, 2, 3, 3], "이름" : ["가", "나", "다", "라", "마", "바"], "학점" : ["A", "B", "B", "C", "A", "D"]}
df = pd.DataFrame(a)

df

 

 

isin 함수 사용법

isin 함수는 df[열 이름].isin(목록 리스트) 형태로 사용해주시면 됩니다.

먼저, "반" 컬럼이 1 혹은 2인 경우에 대한 참 / 거짓 여부를 조회하는 경우는 다음과 같습니다.

df["반"].isin([1, 2])

# 결과
0     True
1     True
2     True
3     True
4    False
5    False
Name: 반, dtype: bool

 

반응형

 

이를 loc 함수를 활용한 조건 필터링과 결합하여 1반 혹은 2반인 행들만 가져올 수 있습니다.

df.loc[df["반"].isin([1, 2])]

 

문자열 값에 대해서도 isin을 마찬가지로 사용할 수 있습니다.

"학점" 컬럼이 "A" 혹은 "B"인 경우에 대한 조건 필터링도 아래처럼 해볼 수 있습니다.

df.loc[df["학점"].isin(["A", "B"])]

 

 

isin 함수 반대 조건 지정 방법

만일, isin과는 거꾸로 해당 목록에 포함되지 않은 값들을 조회하여 가져오고 싶은 경우에는

조건 앞에 ~를 붙여서 반대 조건을 의미해주시면 됩니다.

 

예를 들어, "학점" 열이 "A", "B"가 모두 아닌 경우만 필터링을 하는 경우는 다음과 같습니다.

df.loc[~(df["학점"].isin(["A", "B"]))]