본문으로 건너뛰기
김신건의 로그

[Pandas] str.contains / startswith / endswith

· 수정 · 📖 약 1분 · 152자/단어 #python #pandas #string #pattern
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="…

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기