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

[Pandas] .str accessor

· 수정 · 📖 약 1분 · 239자/단어 #python #pandas #string
Pandas str, Pandas .str, Pandas str accessor, string accessor, 벡터 문자열

정의

Series.str 는 Series 의 각 문자열 원소에 벡터화된 문자열 메서드 를 적용하는 accessor. Python str 의 거의 모든 메서드를 NaN-aware 로 제공.

s.str.lower()
s.str.contains('python')
s.str.split(',')
s.str.replace('a', 'A')

기본 메서드

메서드의미
.lower(), .upper(), .title(), .capitalize()대소문자
.strip(), .lstrip(), .rstrip()공백 제거
.len()문자열 길이
.startswith(s), .endswith(s)시작/끝 검사
.contains(pat)부분 문자열 (정규식 가능)
.replace(pat, repl)치환
.split(sep), .rsplit(sep)분리
.join(sep)결합 (list of str)
.slice(start, stop), .slice_replace(...)슬라이싱
.pad(width, side), .zfill(width)패딩
.cat(sep=)Series 연결

기본 사용

python
import pandas as pd
s = pd.Series(['  Alice  ', 'BOB', 'Charlie', None])
print(s.str.strip().str.lower().tolist())
print(s.str.len().tolist())
print(s.str.startswith('A').tolist())
결과
['alice', 'bob', 'charlie', None]
[9.0, 3.0, 7.0, nan]
[False, False, False, None]

NaN 은 NaN 으로 유지 (Python str 의 메서드는 NaN 에서 에러).

chaining

df['email_clean'] = (df['email']
    .str.lower()
    .str.strip()
    .str.replace(r'\s+', '', regex=True))

체이닝이 자연스럽다.

새 컬럼 분리

s = pd.Series(['Alice,30', 'Bob,25'])
df = s.str.split(',', expand=True)
df.columns = ['name', 'age']

expand=True 가 DataFrame 반환, expand=False (기본) 는 list of list.

get / getitem

s = pd.Series(['Alice,30', 'Bob,25'])
s.str.split(',').str.get(0)   # 첫 원소
s.str.split(',').str[0]        # 같음, indexer 형태
s.str[0]                       # 첫 글자
s.str[-1]                      # 마지막 글자

category 자동 보존

s = pd.Series(['A', 'B', 'A']).astype('category')
s.str.lower()    # category dtype 유지 (유한 cardinality)

함정

1. NaN 의 비교

s.str.contains('a')         # NaN 행 → NaN
s.str.contains('a', na=False)  # NaN → False (필터에 안전)

mask 로 쓸 때 na=False 필수.

2. 정규식의 escape

s.str.contains('.')         # 정규식 메타문자 → 모두 매칭
s.str.contains('.', regex=False)
s.str.contains(r'\.', regex=True)

3. 모든 문자열을 str 로 캐스트

s = pd.Series([1, 2, 3])
s.str.lower()    # AttributeError
s.astype(str).str.lower()    # ✓

참고

이 글의 용어 (3개)
[Pandas] Seriespandas
정의 는 1차원 레이블 배열. NumPy + 의 결합. 의 한 열이 곧 Series. 핵심 속성 | 속성 | 의미 | |:---|:---| | | numpy array | | |…
[Pandas] str regex (extract / split / replace)pandas
정의 의 정규식 기반 메서드. 패턴 추출, 분리, 치환 의 핵심. str.extract 캡처 그룹으로 부분 문자열을 새 컬럼으로. <CodeWithOutput language="…
[Pandas] str.contains / startswith / endswithpandas
정의 문자열 Series 에서 패턴 매칭 으로 필터링/검색하는 메서드들. SQL 의 , 패턴. contains <CodeWithOutput language="python" out…

💬 댓글

사이트 검색 / 명령어

검색

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