개요
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/