[Pandas] str.contains를 사용하는 이유 - 정규표현식딥상어동의 딥한 데이터 처리/전처리2021. 9. 26. 23:36
Table of Contents
Pandas의 기본 인덱싱
인덱싱이란? index를 기반으로 값의 위치를 찾는 행위를 말합니다. Pandas에서는 보통 loc를 많이 사용합니다.
import pandas as pd
sampleData = pd.DataFrame()
sampleData['val1'] = ['M', 'F', 'M', 'M', 'F']
위와 같은 샘플 데이터가 있다고 가정해보겠습니다. 만약, M만 추출하려면 아래와 같이 조건을 설정하면 됩니다.
sampleData.loc[(sampleData.val1 == 'M'), 'val1']
https://gibles-deepmind.tistory.com/65?category=892466#head3
(인덱싱 내용 참조)
Pandas에서 정규표현식을 사용하려면?
Pandas에서 정규표현식을 사용하여 인덱싱을 하기 위해서는 기존의 표현 방식을 벗어날 필요가 있습니다. 왜냐하면, 기존의 조건문은 == 완전한 일치 관계를 찾기 때문인데요.
이는 무수히 많은 문자열 가운데 규칙을 표준화하여 특정 문자열을 찾아주는 정규표현식의 철학과 맞지 않습니다. 따라서, 포함 관계를 찾을 수 있는 메서드를 사용하여야 합니다.
str.contains - 포함하면 값을 반환
import pandas as pd
sampleData = pd.DataFrame()
sampleData['val1'] = ['abc1.pdf', 'abc2.pdf', 'abc3.pdf', 'abc4.pdf', 'abc5.pdf']
위의 데이터에서 pdf 파일명 1~3만 추출하는 상황을 가정해보겠습니다.
sampleData.loc[sampleData['val1'].str.contains(r"abc[1-3]")]
위와 같이 간단하게 pdf파일명만 찾을 수 있습니다.
def getRegex(df : pd.DataFrame, col_name : str, regex : str) -> pd.DataFrame :
return df[df[col_name].str.contains(regex)]
getRegex(sampleData, 'val1', r'abc[1-3]')
위와 같이 정규표현식을 인덱싱하는 간단한 함수를 사용할 수도 있습니다.
'딥상어동의 딥한 데이터 처리 > 전처리' 카테고리의 다른 글
정규표현식 뽀개기 (2) - 메타 문자 이해하기 (0) | 2021.10.24 |
---|---|
정규표현식 뽀개기 (1) - 정규표현식을 배우는 이유 (0) | 2021.10.20 |
[Pandas] 이것만은 알고가자 - 2.Basic Function (0) | 2021.06.07 |
[Pandas] 이것만은 알고가자 - 1.Indexing(iloc, loc) (0) | 2021.06.05 |
[Pandas] 이것만은 알고가자 - 0.파일 불러오기 (0) | 2021.06.05 |
@딥상어동의 딥한생각 :: 딥상어동의 딥한생각
제 블로그에 와주셔서 감사합니다! 다들 오늘 하루도 좋은 일 있으시길~~
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!