contains()로 판다스 시리즈 특정 문자열 포함여부 파악하기
오늘은 쓸때마다 쓰는 방법이 매번 헷갈리는 contains를 정리해보려한다.
df.col.apply(lambda x : x.contains('단어')) 이런식으로 썼다가 맨날 에러남...
시리즈(ex, df.col) 뒤에다가 str.contains('단어') 이런식으로 쓰면 된다.
Series.str.contains(pat, case=True, flags=0, na=nan, regex=True)
판다스 공식문서에 가면 이렇게 쓰여있다.
인덱스나 시리즈에 특정 패턴(단어)나 정규식이 포함되어 있는지 여부를 파악해주는 테스트다.
contains 사용시 필요한 각각의 파라미터에 대해 알아보자.
문자열이나 정규식 형태로 써주면 된다.
디폴트값은 True이며 True일 경우 대소문자를 구분한다.
re모듈에 전달할 flag란다. 예시로 re.IGNORECASE.를 들어둔걸보아 re모듈에 이쓴ㄴ 컴파일 옵션을 불러오는 기능 같다.
na값 채우는 기능이다. na=False로 되어있으면 na값이 False로 바뀐다.
만약 True면 정규식이라고 가정하고 False면 입력 문자열 그대로 처리한다
반환값은 boolean형태로 해당 문자열을 포함하고 있으면 True 없으면 False를 반환한다.
나는 특정 컬럼에서 각각의 값(행기준)이 해당 문자를 포함하고 있는지 확인하기위해 주로 사용한다.
예를 들어 아래와 같은 주소 컬럼에서 원하는 지역정보만 추출할 때 사용한다.
df.col.str.contains('지역명')
이런식으로 치면 아래처럼 나온다.
최종적으로 아래와 같이 필터링을 할 수 있다^^