Python Pandas에서 원하는 텍스트가 포함된 행을 반복하며 가져오려면 itertuples() 메서드와 find() 메서드를 함께 사용하면 됩니다. itertuples()는 DataFrame의 각 행을 튜플(namedtuple) 형태로 순회(iterate)하는 기능을 제공합니다.
1. 라이브러리 임포트
먼저 필요한 라이브러리를 별칭(alias)과 함께 임포트합니다.
import pandas as pd
2. CSV 파일 준비
이 예제에서 사용할 CSV 파일은 데스크톱에 아래 경로로 저장되어 있습니다.
C:\Users\amit_\Desktop\CarRecords.csv
3. CSV 파일 읽고 DataFrame 생성하기
read_csv() 함수로 CSV 파일을 읽어 Pandas DataFrame을 생성합니다.
dataFrame = pd.read_csv("C:\Users\amit_\Desktop\CarRecords.csv")4. 특정 텍스트가 포함된 행 찾기
itertuples()로 행을 하나씩 순회하면서 find() 메서드로 특정 텍스트가 포함되어 있는지 확인합니다. 여기서는 Car 열에서 "Lamborghini"이라는 텍스트가 포함된 행을 찾습니다.
for k in dataFrame.itertuples():
if k[1].find('Lamborghini') != -1:
print(k)find() 메서드는 문자열 안에서 해당 텍스트가 처음 나타나는 위치(인덱스)를 반환하며, 텍스트가 존재하지 않으면 -1을 반환합니다. 따라서 반환값이 -1이 아니라면 그 행에 원하는 텍스트가 포함되어 있다는 의미입니다.
전체 예제 코드
다음은 지금까지의 과정을 모두 담은 전체 코드입니다.
import pandas as pd
# CSV 파일 읽기
dataFrame = pd.read_csv("C:\Users\amit_\Desktop\CarRecords.csv")
print("DataFrame...\n", dataFrame)
# 특정 텍스트가 포함된 행을 반복하며 가져오기
# Car 열에서 'Lamborghini' 텍스트 검색
for k in dataFrame.itertuples():
if k[1].find('Lamborghini') != -1:
print(k)
실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
Pandas(Index=5, Car='Lamborghini', Place='Chandigarh', UnitsSold=80) Pandas(Index=8, Car='Lamborghini', Place='Delhi', UnitsSold=100)
출력 결과를 보면 Car 열에 'Lamborghini'이 포함된 두 개의 행(인덱스 5와 8)만 정확하게 필터링되어 출력된 것을 확인할 수 있습니다. 이처럼 itertuples()와 find()를 조합하면 DataFrame 전체를 손쉽게 순회하면서 조건에 맞는 행만 골라낼 수 있습니다.