#개요
📌 데이터 생성
![](https://velog.velcdn.com/images/codataffee/post/06d76fec-d86e-40bc-a9b5-d90181e97700/image.png)
import pandas as pd
df = pd.DataFrame({'A': ['블루베리 스무디', '딸기 스무디', '딸기 바나나 스무디'],
'B': [10, 20, 30],
'C': ['추천/신메뉴', '신메뉴/할인', '사이즈업/추천'],
'D': ['ab cd', 'AB CD', 'ab cd']
})
df
📌 replace 데이터프레임
![](https://velog.velcdn.com/images/codataffee/post/375ca5fb-86dd-43e5-9ac5-f96337586679/image.png)
# replace, 전체 문자가 일치해야 변경
df['A'] = df['A'].replace('스무디','에이드') # 변경이 되지 않음!
df
![](https://velog.velcdn.com/images/codataffee/post/25854a09-ee23-478a-bcc0-7cdfe3efd8f8/image.png)
# replace 데이터프레임
df.replace('블루베리 에이드','청포도 에이드')
📌 str.replace 일부 문자
![](https://velog.velcdn.com/images/codataffee/post/e8ad3ad9-025a-470e-b30e-2c3f6a8b8dab/image.png)
# str.replace, 일부 일치하는 문자 변경
# 시리즈 형태의 문자만 변경 가능!
df['A'] = df['A'].str.replace('스무디','에이드')
df
![](https://velog.velcdn.com/images/codataffee/post/3c800134-8f21-46d3-a30e-ee1273d74a78/image.png)
# str.replace, 일부 일치하는 문자 변경
# 시리즈 형태의 문자만 변경 가능!
df.str.replace('블루베리 에이드','청포도 에이드')
# 시리즈 형태가 아니기 때문에 오류 반환
📌 숫자 변경
![](https://velog.velcdn.com/images/codataffee/post/6520e832-6f01-4748-a8d3-13274c5c1fce/image.png)
# 숫자 변경
df['B'] = df['B'].replace(10,100)
df
![](https://velog.velcdn.com/images/codataffee/post/eafadaf0-4ea3-4420-9470-14d66952ed3d/image.png)
# 숫자 변경(str.replace)
# 시리즈에 str 접근자를 사용하면 오류가 반환된다.
df['B'] = df['B'].str.replace(10, 100)
df
📌 split 어절 나누기
![](https://velog.velcdn.com/images/codataffee/post/7900fe9d-7b67-493b-8faa-0caee046c645/image.png)
# 어절 나누기
df['A'].str.split()
![](https://velog.velcdn.com/images/codataffee/post/a800c63b-b450-4c49-8e4d-3ee2edb6028e/image.png)
# 어절 나눈 후 첫 번째 값
df['A'].str.split().str[0]
![](https://velog.velcdn.com/images/codataffee/post/7dfbf9ff-75bd-40b0-85c8-bee7ab479ca2/image.png)
# 어절 나눈 후 첫 번째 값을 새로운 컬럼으로 대입
df['E'] = df['A'].str.split().str[0]
df
![](https://velog.velcdn.com/images/codataffee/post/641e1b1b-94c8-4447-b49f-106fa6af3940/image.png)
# 어절 나누기(/)
df['C'].str.split('/')
📌 contains 특정 문자 찾기
![](https://velog.velcdn.com/images/codataffee/post/ae022f12-30dd-4d9a-a951-f0a6085102b1/image.png)
# 특정 문자 찾기 (contains)
df['A'].str.contains('딸기')
![](https://velog.velcdn.com/images/codataffee/post/30ffccbf-410e-406d-ad63-2705605e117e/image.png)
# 특정 문자 찾은 후 새컬럼에 대입 (contains)
df['is딸기'] = df['A'].str.contains('딸기')
df
📌 isin 특정 값 찾기
![](https://velog.velcdn.com/images/codataffee/post/e527b0fa-ac2c-4ff7-8099-f86abde1027d/image.png)
# 데이터
menu = pd.Series(['맛난버거 세트', '매운 치킨버거', '더블 치즈버거'])
![](https://velog.velcdn.com/images/codataffee/post/57cc9bc1-8c08-4b7f-8c79-ff452f9e5c04/image.png)
# 특정 값이 있는지 확인하기 (isin)
# 여러 값을 동시에 찾을 수 있음!
menu.isin(['맛난버거 세트', '더블 치즈버거'])
![](https://velog.velcdn.com/images/codataffee/post/ac10857a-5745-4d9a-869a-261f1cac904c/image.png)
# 특정 단어가 있는지 확인하기 (isin)
# 전체 값을 다 적지 않고 일부만 적으면 찾아내지 못한다!
menu.isin(['세트'])
![](https://velog.velcdn.com/images/codataffee/post/6f640121-3d94-4cae-996a-cdc3d4b56bc8/image.png)
# 특정 단어가 있는지 확인하기 (contains)
# 1개 값만 찾을 수 있음!
menu.str.contains('세트')
📌 len 문자 길이
![](https://velog.velcdn.com/images/codataffee/post/8a2d609b-fd0d-470d-ad57-a8106f3a471a/image.png)
# 문자 길이
# str 접근자를 사용해 len 사용 가능!
df['A'].str.len()
📌 대소문자 구분
![](https://velog.velcdn.com/images/codataffee/post/5d8f9820-a3c3-44ec-adb0-790ed2dae2e1/image.png)
# 대소문자 구분
# 파이썬은 기본적으로 대소문자를 구분한다!
'AB cd' == 'ab CD'
![](https://velog.velcdn.com/images/codataffee/post/1e448716-2c6a-46d7-9f6d-af97983736c4/image.png)
# 소문자로 변경
df['D'].str.lower()
![](https://velog.velcdn.com/images/codataffee/post/95b42917-fc24-4153-a7b9-2a2e68c054ab/image.png)
# 대문자로 변경
df['D'].str.upper()
📌 공백 구분
![](https://velog.velcdn.com/images/codataffee/post/3db7e14b-5a01-4929-a9e9-88876c9b2420/image.png)
df2 = pd.DataFrame({'A': ['블루베리 스무디', '딸기 스무디', '딸기 바나나 스무디'],
'B': [10, 20, 30],
'C': ['추천/신메뉴', '신메뉴/할인', '사이즈업/추천'],
'D': ['ab cd', 'AB CD', 'ab cd '] # 3번째 값에 마지막 공백 추가
})
![](https://velog.velcdn.com/images/codataffee/post/50b3eef7-834f-4420-93d3-ea987410460a/image.png)
# AB CD와 같은가?
# 공백이 있기 때문에 같은 값이 아니라고 반환한다!
df2['D'] = df2['D'].str.upper()
df2['D'] == 'AB CD'
📌 공백 제거
![](https://velog.velcdn.com/images/codataffee/post/7464a307-91d6-439d-b33a-740284d65aee/image.png)
# 공백 제거
df2['D'] = df2['D'].str.replace(" ","")
df2
📌 문자열 슬라이싱
![](https://velog.velcdn.com/images/codataffee/post/e8db7910-c768-4e3f-8250-3546e2281f34/image.png)
# 슬라이싱(str)
df2['D'].str[:2]
![](https://velog.velcdn.com/images/codataffee/post/eb846d70-f4ea-4925-bd6e-c3199e0aedaa/image.png)
# 슬라이싱
# str 접근자를 활용해야 문자열에 접근이 가능하다!
# str 접근자가 없으면 해당 인덱스 행이 출력
df2['D'][:2]
📌 원하는 문자 슬라이싱
![](https://velog.velcdn.com/images/codataffee/post/efffc591-802e-434e-b6ff-df8e1a308a92/image.png)
# 데이터
df = pd.DataFrame({'date':['2024년 3월', '2024년 4월', '2025년 5월']})
![](https://velog.velcdn.com/images/codataffee/post/b1e467fc-c8e6-4c81-93a9-bb2b4bdf75b9/image.png)
# 연도
df['date'].str[:4]
![](https://velog.velcdn.com/images/codataffee/post/9057df3f-b0b9-49fc-ae3a-e73b636580b0/image.png)
# 월
df['date'].str[6:7]