[Pandas] str.contains / startswith / endswith
Pandas str pattern, Pandas str contains, 문자열 매칭 pandas
정의
문자열 Series 에서 패턴 매칭 으로 필터링/검색하는 메서드들. SQL 의 LIKE, WHERE str LIKE '%pat%' 패턴.
contains
s.str.contains('python') # 'python' 포함
s.str.contains('python', case=False) # 대소문자 무시
s.str.contains(r'^\d+$', regex=True) # 정규식
s.str.contains('python', na=False) # NaN → False
python
import pandas as pd
s = pd.Series(['Hello World', 'Python Pandas', 'pandas tutorial', None])
print(s.str.contains('python', case=False, na=False).tolist()) 결과
[False, True, True, False]startswith / endswith
s.str.startswith('Mr.')
s.str.endswith('.com')
s.str.startswith(('Mr.', 'Ms.', 'Dr.')) # tuple 로 여러 패턴
startswith / endswith 는 정규식 미지원, 리터럴 비교만.
match / fullmatch
s.str.match(r'^\d{3}-\d{4}$') # 처음부터 매칭 (re.match)
s.str.fullmatch(r'^\d{3}-\d{4}$') # 전체 매칭 (re.fullmatch)
s.str.contains(r'\d{3}-\d{4}') # 어느 위치든 매칭 (re.search)
| 메서드 | 동작 |
|---|---|
contains(pat) | 부분 매칭 (re.search) |
match(pat) | 처음부터 매칭 (re.match) |
fullmatch(pat) | 전체 매칭 (re.fullmatch) |
find / rfind / index
s.str.find('o') # 첫 위치 (없으면 -1)
s.str.rfind('o') # 마지막 위치
s.str.findall(r'\w+') # 모든 매치 (list 반환)
count
s.str.count('a') # 'a' 등장 횟수
s.str.count(r'\d') # 숫자 개수
필터에 활용
df[df['email'].str.contains('@gmail.com', na=False)]
df[df['name'].str.startswith('Mr.') | df['name'].str.startswith('Ms.')]
df[~df['url'].str.endswith('.png')]
함정
1. NaN 처리
df[df['col'].str.contains('x')]
# NaN 인 행 → NaN (Falsy 가 아님, boolean indexing 에러)
df[df['col'].str.contains('x', na=False)]
# ✓ NaN → False, 안전
2. 정규식 default 변화
pandas 1.x 까지 regex=True 가 기본. pandas 2.x 부터 일부 메서드는 regex=False 권장 (성능 + 안전).
s.str.contains('.', regex=False) # 명시
3. 대소문자
s.str.contains('seoul') # 대소문자 구분
s.str.contains('seoul', case=False) # 무시
s.str.contains('(?i)seoul') # 정규식의 inline flag
참고
이 글의 용어 (3개)
- [Pandas] .str accessorpandas
- 정의 는 Series 의 각 문자열 원소에 벡터화된 문자열 메서드 를 적용하는 accessor. Python str 의 거의 모든 메서드를 NaN-aware 로 제공. 기본 메서…
- [Pandas] Boolean Indexingpandas
- 정의 Boolean Indexing 은 True/False 의 Series 를 인덱서로 전달 해 행을 선택하는 패턴. pandas 의 가장 흔한 필터링 방법. 기본 <CodeWi…
- [Pandas] str regex (extract / split / replace)pandas
- 정의 의 정규식 기반 메서드. 패턴 추출, 분리, 치환 의 핵심. str.extract 캡처 그룹으로 부분 문자열을 새 컬럼으로. <CodeWithOutput language="…
💬 댓글