다음은 특정 셀의 위치를 미리 모르는 상태에서, 엑셀 데이터의 B열 전체에서 "결과보기"라는 단어가 포함된 셀의 **행 인덱스**를 찾는 방법에 대해 자세하고 체계적으로 설명하는 블로그 포스팅 형식의 예시입니다.
엑셀이나 CSV 파일을 다루다 보면, 데이터 전체를 대상으로 특정 키워드(예를 들어 "결과보기")가 포함된 셀의 위치(행 인덱스)를 찾고자 할 때가 있습니다. 이 작업은 데이터의 크기가 커질 경우에도 매우 유용하며, pandas의 **Boolean Masking** 기능을 활용하면 쉽게 해결할 수 있습니다.

문제 설명
- 목표: 엑셀 파일(또는 DataFrame)에서 B열(두 번째 열)에 "결과보기"라는 단어가 포함된 셀의 행 번호(인덱스)를 모두 찾는다.
- 상황: 특정 셀의 위치를 미리 모르는 상태에서 전체 B열을 스캔하여 해당 단어가 포함된 모든 행을 찾아내야 한다.
- 활용 사례: 선거 결과 데이터 분석, 특정 키워드로 데이터 필터링 등
방법론
pandas에서는 문자열 처리와 관련하여 매우 유용한 **str.contains()** 메서드를 제공합니다. 이 메서드를 사용하면, 지정한 열의 각 셀에 대해 특정 문자열이 포함되어 있는지를 쉽게 판별할 수 있습니다.
주요 단계:
1. 엑셀 파일 또는 CSV 파일 불러오기:
`pd.read_excel()` 또는 `pd.read_csv()` 함수를 이용해 데이터를 DataFrame으로 읽어옵니다.
2. B열 선택 및 문자열 변환:
B열은 엑셀의 두 번째 열이므로, DataFrame에서 열 인덱스 1을 사용하여 접근합니다. 만약 데이터에 숫자나 결측치가 포함되어 있다면, `astype(str)`을 사용하여 문자열로 변환합니다.
3. Boolean Masking 적용:
`str.contains("결과보기", na=False)`를 사용해 각 셀에 "결과보기"라는 단어가 포함되어 있는지 판별하고, 결과는 Boolean 값(True/False)로 반환됩니다.
4. 행 인덱스 추출:
Boolean Masking 결과를 바탕으로 조건을 만족하는 행의 인덱스를 리스트로 추출합니다.

파이썬 코드 예시
아래는 위의 단계를 적용한 코드 예시입니다. 여기서는 예시 데이터나 파일 경로를 직접 지정하여 설명합니다.
-------python----------
import pandas as pd
# 엑셀 파일 경로 및 특정 시트 지정 (필요시)
file_path = "/mnt/data/지역구.xlsx"
sheet_name = "Sheet1" # 원하는 시트명으로 변경하세요.
# 데이터 읽기: header=None을 사용하면 첫 행을 헤더로 인식하지 않고 모두 일반 데이터로 처리합니다.
df = pd.read_excel(file_path, sheet_name=sheet_name, header=None)
# B열(두 번째 열)은 인덱스 1에 해당합니다.
# 각 셀을 문자열로 변환한 후 "결과보기"가 포함되어 있는지 Boolean 값으로 확인합니다.
mask = df.iloc[:, 1].astype(str).str.contains("결과보기", na=False)
# 조건을 만족하는 행의 인덱스를 리스트로 추출합니다.
matching_indices = df.index[mask].tolist()
# 결과 출력
print("B열에 '결과보기'가 포함된 행 인덱스:", matching_indices)
-------------------------
코드 동작 설명
- **파일 불러오기:**
`pd.read_excel()` 함수에 `sheet_name`과 `header=None`을 지정하여 원하는 시트의 데이터를 읽습니다.
- **B열 선택 및 변환:**
`df.iloc[:, 1]`을 사용하여 DataFrame의 두 번째 열을 선택하고, `astype(str)`로 문자열로 변환합니다.
- **문자열 판별:**
`str.contains("결과보기", na=False)`를 사용해 각 셀에 "결과보기"라는 단어가 있는지 확인합니다. `na=False` 옵션은 결측값이 있을 때 False로 처리하도록 합니다.
- **행 인덱스 추출:**
Boolean 마스크(mask)를 기반으로 조건에 해당하는 행의 인덱스를 `df.index[mask]`로 얻은 후, `.tolist()`로 리스트로 변환하여 사용합니다.
응용 및 확장
- **다른 열이나 다른 키워드 적용:**
B열이 아니라 다른 열에서 검색하거나, "결과보기" 대신 다른 단어를 검색할 경우, `df.iloc[:, 열번호]` 또는 `str.contains("다른단어", na=False)`로 변경하여 사용할 수 있습니다.
- **조건에 따른 데이터 필터링:**
검색된 인덱스를 활용하여 해당 행 전체의 데이터를 추출하거나, 추가적인 전처리 및 분석 작업을 수행할 수 있습니다.
- **여러 조건 결합:**
여러 키워드나 복합 조건을 이용해 검색 범위를 넓힐 수도 있으며, pandas의 다양한 필터링 기능을 활용하여 복잡한 데이터 분석을 진행할 수 있습니다.
엑셀 파일 내에서 특정 단어를 포함한 셀의 위치를 미리 모르는 상황에서도, pandas의 강력한 문자열 처리와 Boolean Masking 기능을 이용하면 원하는 행 인덱스를 쉽게 찾아낼 수 있습니다. 이 방법은 대용량 데이터에서 특정 키워드를 기반으로 데이터를 필터링하거나 분석할 때 매우 유용하며, 여러분의 데이터 분석 작업에 큰 도움이 될 것입니다.
이와 같이 작성된 코드를 실제 파일 및 데이터 구조에 맞게 응용하면, 보다 효율적으로 데이터를 다룰 수 있습니다.