상세 컨텐츠

본문 제목

iterrows를 활용한 빈 리스트에 결과값 채워넣기

데이터 과학

by Taeyoon.Kim.DS 2023. 12. 7. 00:48

본문

import pandas as pd

self.prediction_data = pd.DataFrame({
    'ocr_score': [...],  # OCR 점수 데이터
    'logo_score': [...],  # 로고 탐지 점수 데이터
    'image_score': [...],  # 이미지 점수 데이터
    # 필요한 다른 컬럼들...
})

먼저 각 점수가 데이터 프레임에 존재한다고 가정한다. 

self.prediction_data['custom_tag'] = [[] for _ in range(len(self.prediction_data))]

데이터프레임에 새로운 컬럼인 'custom_tag'를 생성하고, 데이터프레임의 전체 row의 수만큼 list comprehension을 통해서 빈 리스트를 각 행에 생성해준다.

def classify_trademark_prediction_OCR(self):
    if self.delphic_script_feature_exists:
        for idx, row in self.prediction_data.iterrows():
            if row['ocr_score'] > self.ocr_trademark_score and row['image_score'] > 40:
                row['custom_tag'].append("AI-text in image")

iterrows()메서드가 반환하는 각 튜플을 순회한다. idx는 각 행의 인덱스를, row는 해당 행의 데이터를 나타내는 시리즈 객체를 받는다. idx가 있어서 각 행의 인덱스를 찾고, row는 해당 행의 데이터를 나타내는 시리즈 객체를 받는다. 

 

이제 두 조건을 합쳐주면 더 쉽게 처리된다.

self.prediction_data['custom_tag'] = [[] for _ in range(len(self.prediction_data))]

for idx, row in self.prediction_data.iterrows():
    if self.delphic_script_feature_exists and row['ocr_score'] > self.ocr_trademark_score and row['image_score'] > 40:
        row['custom_tag'].append("AI-text in image")

    if self.logo_model_exists and row['logo_score'] > self.logo_trademark_score and row['image_score'] > 40:
        row['custom_tag'].append("AI-logo in image")

관련글 더보기