데이터과학 삼학년

[pandas] apply적용 (func return값이 multi일때 어떻게 적용?) 본문

Python

[pandas] apply적용 (func return값이 multi일때 어떻게 적용?)

Dan-k 2022. 4. 27. 19:46
반응형

pandas를 이용한 데이터 분석을 하다보면 간단한 함수를 적용하여 새로운 컬럼을 생성하는 것은 매우 흔한일이다.

예를 들면 아래 코드 예시처럼 커스텀 function이나 lambda를 이용하여 원하는 형태의 컬럼을 생성한다.

def detect_language(text):
    """Detects the text's language."""
    translate_client = translate.Client()
    result = translate_client.detect_language(text)

    return result["language"]
    
# 해당 메시지가 어느나라 언어인지 확인하는 컬럼 생성
df['langauge']= df['message'].apply(detect_language)

# 메시지 길이 산정
df['message_length'] = df['message'].apply(lambda x:len(x))

 

그렇다면, apply를 적용하려는 function의 return값이 한개가 아니라 두개 이상일때는 어떻게 해야하는가???

아주 간단하다. zip(*df)을 이용하면 쉽게 처리 가능하다. 

def detect_translate_language(text):
    from google.cloud import translate_v2 as translate

    translate_client = translate.Client()
    result = translate_client.translate(text, target_language='ko')

    return result["detectedSourceLanguage"], result["translatedText"]


df['langauge'], df['translated_message']= zip(*df['message'].apply(detect_translate_language))

728x90
반응형
LIST
Comments