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