강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

박나현님의 프로필 이미지
박나현

작성한 질문수

캐글 작업형1 T1-19

작성

·

58

0

선생님 ! 캐글 T1 -19번 문제에서

이벤트가 1인 sales값은 80%만 반영되게끔 하려면

def event_sales(x):

if x['Events'] == 1:

x['Sales2'] = x['Sales']*0.8

else:

x['Sales2'] = x['Sales']

return x

df = df.apply(lambda x: event_sales(x), axis=1) #1일 경우 row, 0일 경우 컬럼

df.head()

이 풀이방식 외의 더 쉬운 식으로는 문제 풀 수 없을까요? ㅜㅜ

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

박나현님, 말씀하신 캐글 작업형1 T1-19번 문제에 대한 다른 접근 방식으로는 numpy를 활용하는 방법이 있습니다. numpywhere 함수를 사용하면 조건에 따라 값을 선택하여 새로운 컬럼에 적용하는 것이 가능합니다. 코드는 다음과 같습니다.

import numpy as np

df['Sales2'] = np.where(df['Events'] == 1, df['Sales'] * 0.8, df['Sales'])

이 방식을 사용하면, if-else 조건문을 함수로 정의하고 apply 메소드로 적용하는 것보다 훨씬 간결하게 조건에 따른 값의 변경을 할 수 있습니다. numpywhere 함수는 조건에 따라 배열의 요소를 선택하기 위해 사용되므로 이 경우에 적합한 방식입니다.

위 코드에서는 Events의 값이 1인 경우, Sales 값의 80%를, 그렇지 않은 경우는 원래의 Sales 값을 Sales2라는 새로운 컬럼에 저장하게 됩니다.

박나현님의 프로필 이미지
박나현

작성한 질문수

질문하기