작성
·
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
를 활용하는 방법이 있습니다. numpy
의 where
함수를 사용하면 조건에 따라 값을 선택하여 새로운 컬럼에 적용하는 것이 가능합니다. 코드는 다음과 같습니다.
import numpy as np
df['Sales2'] = np.where(df['Events'] == 1, df['Sales'] * 0.8, df['Sales'])
이 방식을 사용하면, if-else
조건문을 함수로 정의하고 apply
메소드로 적용하는 것보다 훨씬 간결하게 조건에 따른 값의 변경을 할 수 있습니다. numpy
의 where
함수는 조건에 따라 배열의 요소를 선택하기 위해 사용되므로 이 경우에 적합한 방식입니다.
위 코드에서는 Events
의 값이 1인 경우, Sales
값의 80%를, 그렇지 않은 경우는 원래의 Sales
값을 Sales2
라는 새로운 컬럼에 저장하게 됩니다.