hanker

python - pandas 문자열 변환 본문

Python

python - pandas 문자열 변환

hanker 2025. 3. 2. 21:56
반응형

이번 글에서는 pandas에서 문자열을 변환하고 처리하는 여러 방법에 대해서 알아보자.

 


1. 대소문자 변환

 

- 소문자 변환 : .str.lower()

- 대문자 변환 : .str.upper()

- 첫 글자만 대문자로 변환 : .str.title()

 

1-1. 소문자로 변환

import pandas as pd

data = {
    "name": ["Alice", "Bob", "Charlie", "David", "Eva"],
    "city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
    "score": ["85", "90", "78", "88", "95"]
}

df = pd.DataFrame(data)

df['name_lower'] = df['name'].str.lower()
print(df['name_lower'])

 

 

1-2. 대문자로 변환

import pandas as pd

data = {
    "name": ["Alice", "Bob", "Charlie", "David", "Eva"],
    "city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
    "score": ["85", "90", "78", "88", "95"]
}

df = pd.DataFrame(data)

df['name_upper'] = df['name'].str.upper()
print(df['name_upper'])

 

 

1-3. 첫 글자만 대문자

import pandas as pd

data = {
    "name": ["Alice", "Bob", "Charlie", "David", "Eva"],
    "city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
    "score": ["85", "90", "78", "88", "95"]
}

df = pd.DataFrame(data)

df['city_title'] = df['city'].str.title()
print(df['city_title'])

 


2. 문자열 다듬기 (공백 및 특정 문자 제거)

 

- 양쪽 공백 제거 : .str.strip()

- 좌측 공백 제거 : .str.lstrip()

- 우측 공백 제거 : .str.rstrip()

 

2-1. 양쪽 공백 제거 

import pandas as pd

data = {
    "name": ["Alice", "Bob", "Charlie", "David", "Eva"],
    "city": ["    New York     ", "London", "Paris", "Berlin", "Tokyo"],
    "score": ["85", "90", "78", "88", "95"]
}

df = pd.DataFrame(data)
print(df)

df['city'] = df['city'].str.strip()
print(df)

 

 

2-2. 왼쪽 공백 제거

import pandas as pd

data = {
    "name": ["Alice", "Bob", "Charlie", "David", "Eva"],
    "city": ["                New York              ", "London", "Paris", "Berlin", "Tokyo"],
    "score": ["85", "90", "78", "88", "95"]
}

df = pd.DataFrame(data)
print(df)

# 왼쪽 공백 제거
df['city'] = df['city'].str.lstrip()
print(df)

 

 

2-3. 오른쪽 공백 제거

import pandas as pd

data = {
    "name": ["Alice", "Bob", "Charlie", "David", "Eva"],
    "city": ["                New York              ", "London", "Paris", "Berlin", "Tokyo"],
    "score": ["85", "90", "78", "88", "95"]
}

df = pd.DataFrame(data)
print(df)

# 오른쪽 공백 제거
df['city'] = df['city'].str.rstrip()
print(df)

 

 

2-4 특정 문자 제거

import pandas as pd

data = {
    "name": ["Alice", "Bob", "Charlie", "David", "Eva"],
    "city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
    "score": ["85", "90", "78", "88", "95"]
}

df = pd.DataFrame(data)
print(df)

df['name_clean'] = df['name'].str.strip('aeiou')  # a, e, i, o, u 제거
print(df['name_clean'])

 


3. 문자열 대체

 

- 문자열 치환 : .str.replace()

 

3-1. 문자열 치환

import pandas as pd

data = {
    "name": ["Alice", "Bob", "Charlie", "David", "Eva"],
    "city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
    "score": ["85", "90", "78", "88", "95"]
}

df = pd.DataFrame(data)
print(df)

df['city_replace'] = df['city'].str.replace('o', '0', regex=False)
print(df['city_replace'])

 

 

3-2. 정규식을 이용한 치환

import pandas as pd

data = {
    "name": ["Alice", "Bob", "Charlie", "David", "Eva"],
    "city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
    "score": ["85", "90", "78", "88", "95"]
}

df = pd.DataFrame(data)
print(df)

df['score_replace'] = df['score'].str.replace(r'\d', 'X', regex=True)
print(df['score_replace'])

 


4. 문자열 분할

 

- 문자열 분할 : .str.split()

 

4-1. 공백을 기준으로 문자열 분할

import pandas as pd

data = {
    "name": ["Alice", "Bob", "Charlie", "David", "Eva"],
    "city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
    "score": ["85", "90", "78", "88", "95"]
}

df = pd.DataFrame(data)
print(df)

df['city_split'] = df['city'].str.split(' ')
print(df['city_split'])

 

 

4-2. 첫 번째 단어만 추출

import pandas as pd

data = {
    "name": ["Alice", "Bob", "Charlie", "David", "Eva"],
    "city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
    "score": ["85", "90", "78", "88", "95"]
}

df = pd.DataFrame(data)
print(df)

df['first_word'] = df['city'].str.split(' ').str[0]
print(df['first_word'])

 

 


5. 문자열 결합

 

import pandas as pd

data = {
    "name": ["Alice", "Bob", "Charlie", "David", "Eva"],
    "city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
    "score": ["85", "90", "78", "88", "95"]
}

df = pd.DataFrame(data)
print(df)

df['name_city'] = df['name'].str.cat(df['city'], sep=', ')
print(df['name_city'])

 


6. 문자열 길이 계산

 

- 문자열 결합 : .str.cat()

import pandas as pd

data = {
    "name": ["Alice", "Bob", "Charlie", "David", "Eva"],
    "city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
    "score": ["85", "90", "78", "88", "95"]
}

df = pd.DataFrame(data)
print(df)

df['name_length'] = df['name'].str.len()
print(df['name_length'])

 


7. 특정 패턴 찾기

 

- 특정 패턴 찾기 : .str.contains()

 

7-1. 특정 패턴 찾기

import pandas as pd

data = {
    "name": ["Alice", "Bob", "Charlie", "David", "Eva"],
    "city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
    "score": ["85", "90", "78", "88", "95"]
}

df = pd.DataFrame(data)
print(df)

df['has_o'] = df['city'].str.contains('o')
print(df['has_o'])

 

 

7-2. 정규식을 사용해 특정 패턴 찾기

import pandas as pd

data = {
    "name": ["Alice", "Bob", "Charlie", "David", "Eva"],
    "city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
    "score": ["85", "90", "78", "88", "95"]
}

df = pd.DataFrame(data)
print(df)

df['has_digit'] = df['score'].str.contains(r'\d')
print(df['has_digit'])

 

 


8. 문자열 시작/끝 확인

 

- 문자열 시작 확인 : .str.startwith()

- 문자열 끝 확인 : .str.endswith()

import pandas as pd

data = {
    "name": ["Alice", "Bob", "Charlie", "David", "Eva"],
    "city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
    "score": ["85", "90", "78", "88", "95"]
}

df = pd.DataFrame(data)
print(df)

df['starts_with_a'] = df['name'].str.startswith('A')
df['ends_with_s'] = df['city'].str.endswith('s')
print(df[['name', 'starts_with_a', 'ends_with_s']])

 


9. 문자열 일부 추출

 

- 문자열 추출 : .str.slice(), .str[:n], .str[-n:]

 

9-1. 문자열의 처음 3글자 추출

import pandas as pd

data = {
    "name": ["Alice", "Bob", "Charlie", "David", "Eva"],
    "city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
    "score": ["85", "90", "78", "88", "95"]
}

df = pd.DataFrame(data)
print(df)

df['name_slice'] = df['name'].str.slice(0, 3)
print(df['name_slice'])

 

 

9-2. 마지막 2글자 추출

import pandas as pd

data = {
    "name": ["Alice", "Bob", "Charlie", "David", "Eva"],
    "city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
    "score": ["85", "90", "78", "88", "95"]
}

df = pd.DataFrame(data)
print(df)

df['city_last2'] = df['city'].str[-2:]
print(df['city_last2'])

 


10. 문자열을 숫자로 변환

 

- 문자열을 숫자로 변환 : .astype()

import pandas as pd

data = {
    "name": ["Alice", "Bob", "Charlie", "David", "Eva"],
    "city": ["New York", "London", "Paris", "Berlin", "Tokyo"],
    "score": ["85", "90", "78", "88", "95"]
}

df = pd.DataFrame(data)
print(df)

df['score'] = df['score'].astype(int)
print(df['score'].sum())

 


정리
함수 기능
.str.lower()
.str.upper()
.str.title()
대소문자 변환
.str.strip()
.str.lstrip()
.str.rstrip()
공백 및 문자 제거
.str.replace() 문자열 치환
.str.split() 문자열 분할
.str.cat() 문자열 결합
.str.len() 문자열 길이 계산
.str.contains()
.str.startswith()
.str.endswith()
패턴 검색
.str.slice() 문자열 추출
.astype() 숫자형 변환

 

반응형