2025.02.24 - [프로그래밍/Python 관련 정보] - [Pandas] Table of Contents
pandas의 .str 속성은 Series(혹은 Index) 객체에 대해 벡터화된 문자열 연산을 수행할 수 있도록 해주는 속성입니다. 일반적인 Python 문자열 메서드를 그대로 사용할 수 있으며, 결측치(NA)는 기본적으로 NA로 유지됩니다. 문자열 타입에만 적용됩니다.
1. str.replace(old, new, regex=False, case=True, na=True, ...)
: 문자열의 특정 부분을 다른 문자열로 대체합니다. regex=True를 설정하면 정규 표현식을 사용할 수 있습니다.
2. str.len()
: 문자열의 길이를 반환합니다.
3. str[i]
: 문자열 인덱싱을 사용하여 특정 위치의 문자를 반환합니다
4. str.count(substring, case=True, na=True)
: 문자열에 특정 문자열이 몇 번 나타나는지 카운트합니다.
5. str.find(substring, start=None, end=None, case=True)
: 문자열에서 특정 문자열의 첫 번째 위치를 찾습니다.
6. str.lower()/str.upper()
: 문자열을 소문자 또는 대문자로 변환합니다.
사실, str 속성을 꼭 사용하지 않아도 됩니다. 예를들어 str.len() 대신 lambda 함수를 사용할 수도 있겠죠.
df['len_lambda'] = df['col'].apply(lambda x: len(x) if pd.notnull(x) else None)
str 속성을 사용하는 다양한 예시는 아래와 같습니다.
import pandas as pd
# 예제 DataFrame 생성
df = pd.DataFrame({
'name': ['Alice', 'Bob', None, 'Charlie_Doe'],
'email': ['alice@example.com', 'bob123@site.org', 'nobody@none', None]
})
# 1) 소문자 변환
df['name_lower'] = df['name'].str.lower()
# 결과: ['alice', 'bob', NaN, 'charlie_doe']
# 2) 문자열 길이 측정
df['email_len'] = df['email'].str.len()
# 결과: [17, 16, 12, NaN]
# 3) 특정 패턴 포함 여부 (contains)
df['has_dot'] = df['email'].str.contains(r'\.', na=False)
# 결과: [True, True, False, False]
# 4) 언더스코어로 분할 후 첫 번째 요소 추출
df['first_part'] = df['name'].str.split('_').str.get(0)
# 결과: ['Alice', 'Bob', None, 'Charlie']
# 5) 정규표현식 그룹 추출 (도메인만)
df['domain'] = df['email'].str.extract(r'@(.+)$', expand=False)
# 결과: ['example.com', 'site.org', 'none', NaN]
# 6) 결합 (cat)
df['contact'] = df['name'].str.cat(df['email'], sep=' | ', na_rep='[missing]')
# 결과: ['Alice | alice@example.com', 'Bob | bob123@site.org', '[missing] | nobody@none', 'Charlie_Doe | [missing]']
'프로그래밍 > Python 관련 정보' 카테고리의 다른 글
[Pandas - Frequently Used Code] DataFrame 만들기 (0) | 2025.04.26 |
---|---|
[Python 기초] all(), any() (0) | 2025.04.26 |
[SQL문제풀이-Union의 활용] Friend Requests II (0) | 2025.04.13 |
[Python문제풀이-Dynamic Programming] 정수삼각형 (0) | 2025.04.06 |
[Python - Frequently Used Code] math.inf (0) | 2025.04.05 |