Pandas에서 filter() 함수를 사용하면 DataFrame에서 특정 열의 부분 집합(subset)을 손쉽게 만들 수 있습니다. 특히 like 매개변수를 활용하면 이름에 공통 패턴이 포함된 열들을 한 번에 추출할 수 있어 매우 유용합니다.
1. 예제용 DataFrame 만들기
먼저 세 개의 열을 가진 DataFrame을 생성해 보겠습니다.
dataFrame = pd.DataFrame({
"Product": ["SmartTV", "ChromeCast", "Speaker", "Earphone"],
"Opening_Stock": [300, 700, 1200, 1500],
"Closing_Stock": [200, 500, 1000, 900]
})2. 여러 열로 부분 집합 만들기
인덱싱 연산자 [[]] 안에 원하는 열 이름을 리스트로 전달하면 여러 열을 동시에 선택할 수 있습니다.
dataFrame[['Opening_Stock', 'Closing_Stock']]
3. filter()와 like로 유사한 이름의 열 선택하기
filter(like='Open')처럼 지정하면 열 이름에 'Open'이 포함된 모든 열이 자동으로 필터링됩니다.
dataFrame.filter(like='Open')
전체 예제 코드
지금까지 설명한 내용을 하나로 합친 완성된 코드는 다음과 같습니다.
import pandas as pd
dataFrame = pd.DataFrame({
"Product": ["SmartTV", "ChromeCast", "Speaker", "Earphone"],
"Opening_Stock": [300, 700, 1200, 1500],
"Closing_Stock": [200, 500, 1000, 900]
})
print("DataFrame...\n", dataFrame)
print("\n인덱싱 연산자로 부분 집합 출력:\n", dataFrame[['Product']])
print("\n여러 열로 구성된 부분 집합 출력:\n", dataFrame[['Opening_Stock', 'Closing_Stock']])
print("\n유사한 이름 패턴으로 필터링한 부분 집합 출력:\n", dataFrame.filter(like='Open'))실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
DataFrame...
Closing_Stock Opening_Stock Product
0 200 300 SmartTV
1 500 700 ChromeCast
2 1000 1200 Speaker
3 900 1500 Earphone
인덱싱 연산자로 부분 집합 출력:
Product
0 SmartTV
1 ChromeCast
2 Speaker
3 Earphone
여러 열로 구성된 부분 집합 출력:
Opening_Stock Closing_Stock
0 300 200
1 700 500
2 1200 1000
3 1500 900
유사한 이름 패턴으로 필터링한 부분 집합 출력:
Opening_Stock
0 300
1 700
2 1200
3 1500정리
filter(like='패턴')은 열 이름에 특정 문자열이 포함된 열들을 일괄적으로 가져올 때 유용하며, 정규식을 사용하는 regex 옵션도 함께 제공되므로 상황에 맞게 활용하면 됩니다.