오늘의 물낌표
str.contains()는 무엇인가?
python DataFrame을 다룰 때 특정 칼럼에서 원하는 문자열을 뽑아야 할 때가 있습니다.
'상호명'이라는 칼럼에는 원래 '스타벅스', '투썸', '이디야' 등 많은 커피 상호명이 담겨 있는데,
위 사진은 '할리스'를 포함한 문자열만을 뽑아낸 결과입니다.
이 과정에서 pandas.Series 문자열 메소드인 str.contains()를 사용했어요.
str.contains()을 활용하면 왜 좋을까요?
위 사진을 보면 '할리스' 상호명은 하나의 값으로 통일되어 있지 않고 '할리스커피', '할리스사상점' 등 다양하게 기록되어 있습니다.
그렇기 때문에 str.contains('할리스')를 통해서 '할리스'를 포함하고 있는 모든 할리스 상호명을 뽑아낼 수 있게 되는 거죠.
str.contains() 사용법
# str.contains() 메소드 사용법
df['상호명'].str.contains('할리스')
df는 DataFrame을 의미하고, df[] 속에는 원하는 칼럼명을 넣으시면 돼요.
그리고, 마지막으로 str.contains() 안에는 찾고 싶은 문자열을 넣어주시면 됩니다.
주의사항! df['상호명'].str.contains('할리스') 까지만 입력했다면, 결과값은 True / False로 나오게 됩니다.
위 사진과 같이 뽑아내려면, 아래와 같이 필터링 과정이 꼭 필요합니다!
# 필터링 적용
df[df['상호명'].str.contains('할리스')]
NaN이 존재한다면?
해당 칼럼에 NaN 값이 있다면 True / False가 아닌 NaN을 반환하게 되는데
NaN값이 있는 상태로 필터링을 진행하면 에러가 발생합니다.
그렇기 때문에 NaN 결과를 아래와 같이 na를 통해서 바꿔주는 설정이 필요합니다.
# NaN 결과 바꿔주기
# NaN을 True로 바꾸기
df[df['상호명'].str.contains('할리스', na = True)]
# NaN을 False로 바꾸기
df[df['상호명'].str.contains('할리스', na = False)]