• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

lambda 함수를 제외하고 get_category 함수를 적용하는 방법에 대해 알고싶습니다.

21.06.10 23:20 작성 조회수 182

0

강의 코드에 나와있는

titanic_df['Age_cat'] = titanic_df['Age'].apply(lambda x : get_category(x))
람다함수를 이용해 get_category 함수를 적용하는 방법 외에  다른 방법이 없을까 생각하여
get_category에 곧바로 titanic_df['Age']로 인자를 넣었더니
The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
라는 에러가 뜹니다.
해당 에러가 어떠한 것이 잘못되어 나타나는 것인지,
람다함수를 사용않고 다른 방법으로 titanic_df["Age_cat] 칼럼을 만들려면 코드를 어떻게 짜야할지 알고싶습니다. 

답변 1

답변을 작성해보세요.

1

안녕하십니까,

어떻게 변경을 하셨다는 건지 정확히는 모르겠지만,  말씀하신대로

titanic_df['Age_cat'] = titanic_df['Age'].apply(lambda x : get_category(x))를

titanic_df['Age_cat'] = titanic_df['Age'].apply(lambda x : titanic_df['Age']) 로 변경했다고 가정한다면 오류가 생기는건 당연해 보입니다만... ^^;;

apply(lambda) 식을 하겠다는 것은 한개의 레코드(로우)별로 체크를 해서 변환을 하겠다는 의미입니다. Pandas DataFrame은 기본적으로 레코드 단위가 아닌 컬럼 단위로 일괄 변환을 선호 합니다. 그래서 레코드 단위로 변환을 해야 할때는 위와 같이 apply lambda 식을 적용합니다. 왜나햐면 'Age'는 연속형 실수 값이고, 이를 변환하는 로직은 한 건씩 데이터를 확인 한 뒤에 category값으로 변환을 하는게 가장 쉽게 변환할 수 있는 방법이기 때문입니다.

titanic_df['Age'].apply(lambda x : get_category(x))를 적용하면, 1건의 Age 값이 x로 입력 되고, 이것이 get_category(x)와 같이 인자로 입력됩니다. 이런 변환 외에는 apply lambda 식에 get_category()함수를 풀어서 넣어야 하는데, 이게 오히려 더 어렵습니다.