Pandas DataFrame에 저장된 문자열 중 대문자가 포함된 단어만 골라내고 싶다면 정규식(Regular Expression)을 활용하는 것이 가장 간단한 방법입니다. 파이썬의 re 모듈을 사용하면 몇 줄의 코드로 손쉽게 구현할 수 있습니다.
1. 라이브러리 임포트
먼저 정규식을 다루기 위한 re 모듈과 데이터 처리를 위한 pandas를 임포트합니다.
import re
import pandas as pd2. DataFrame 생성
예제로 사용할 DataFrame을 만들어 보겠습니다. 소문자와 대문자가 섞여 있는 문자열들을 의도적으로 포함시켰습니다.
data = [['computer', 'mobile phone', 'ELECTRONICS', 'electronics'],
['KEYBOARD', 'charger', 'SMARTTV', 'camera']]
dataFrame = pd.DataFrame(data)3. 대문자 단어 추출하기
핵심은 정규식 패턴 \w*[A-Z]\w*입니다. 이 패턴은 "문자열 어디든 대문자(A~Z)를 하나 이상 포함하는 단어"를 의미합니다. 이를 re.match()와 조합하면 조건에 맞는 요소만 걸러낼 수 있습니다.
for i in range(dataFrame.shape[1]):
for ele in dataFrame[i]:
if bool(re.match(r'\w*[A-Z]\w*', str(ele))):
print(ele)전체 예제 코드
import re
import pandas as pd
# DataFrame 생성
data = [['computer', 'mobile phone', 'ELECTRONICS', 'electronics'],
['KEYBOARD', 'charger', 'SMARTTV', 'camera']]
dataFrame = pd.DataFrame(data)
# DataFrame 출력
print("Dataframe...\n", dataFrame)
print("\n대문자가 포함된 단어만 표시...\n")
# 대문자 단어 추출
for i in range(dataFrame.shape[1]):
for ele in dataFrame[i]:
if bool(re.match(r'\w*[A-Z]\w*', str(ele))):
print(ele)실행 결과
Dataframe...
0 1 2 3
0 computer mobile phone ELECTRONICS electronics
1 KEYBOARD charger SMARTTV camera
대문자가 포함된 단어만 표시...
KEYBOARD
ELECTRONICS
SMARTTV정규식 패턴 상세 설명
\w*: 영문자, 숫자, 밑줄(_)로 구성된 0개 이상의 연속된 문자[A-Z]: 대문자 알파벳 한 글자- 따라서
\w*[A-Z]\w*는 단어 내 어느 위치든 대문자가 하나라도 존재하면 매칭됩니다.
참고로, 모든 글자가 대문자로만 이루어진 단어(예: KEYBOARD)만 찾고 싶다면 ^[A-Z]+$ 패턴을 사용하면 됩니다. 반대로 첫 글자만 대문자인 단어를 찾으려면 ^[A-Z]\w* 패턴이 유용합니다. 이처럼 정규식 패턴을 조금씩 수정하면 다양한 조건의 문자열 필터링을 유연하게 구현할 수 있습니다.