인프런 커뮤니티 질문&답변
캐글 작업형1 T1-19
작성
·
59
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라는 새로운 컬럼에 저장하게 됩니다.




