Python/NumPy | Pandas

[Pandas] isin - 리스트로 필터링하기

비번변경 2024. 2. 21. 19:10

개요

Pandas에서 데이터프레임에 대한 열 필터링을 할 때는 아래와 같은 코드를 사용한다.

df[df['column'] == 'value']

 

만약 조건이 되는 값이 여럿일 때는 OR 연산자를 사용할 수 있다.

df[(df['column'] == 'value1')] | (df['column'] == 'value2')]

하지만 조건이 될 수 있는 값이 보다 많을 때는 OR 연산자를 사용하는 것보다 isin 함수를 사용하는 것이 좋을 것 같다. 사용 방법을 적어둔다.

 

 

DataFrame.isin

isin 함수는 DataFrame의 요소가 값에 포함되어 있는지를 판단한다. 값은 iterable, Series, Dictionary, DataFrame 등으로 지정할 수 있다.

 

 

예시 데이터 )

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

 

 

단일값 필터링

df[df['반'].isin([1])]

비교 연산자로 필터링한 모습과 비교하면 동일한 결과를 반환한다.

 

 

다중값 필터링

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

비교 연산자를 OR 연산자로 연결하여 필터링한 모습과 비교하면 동일한 결과를 반환한다.

 

 

다중 컬럼에 대한 다중 값 필터링

여러 컬럼에 대한 필터링을 한 번에 수행할 때도 사용할 수 있다.

아래 코드는 반이 1이거나 학점이 B 또는 C에 해당하는(OR 조건) 행을 필터링한다.

df[df.isin({'반': [1], '학점': ['B', 'C']}).any(axis=1)]

 

 

참고 문서

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.isin.html

https://www.geeksforgeeks.org/python-pandas-dataframe-isin/

https://wikidocs.net/151538