세조목

Python - lambda함수 본문

데이터 분석 공부/Python

Python - lambda함수

세조목 2024. 3. 11. 20:55

lambda함수

데이터프레임에 들어있는 각각의 값들을 하나 하나 함수에 넣어주고싶을때 사용한다.

예를 들어 아래와 같은 코드가 있다고해보자.

data['startprice'].apply(lambda x: x * 100 if x % 1 == 0 else (x + 0.01) * 100)

data라는 이름의 데이터프레임에 startprice라는 이름의 컬럼이 있다.

startprice 컬럼에 여러 속성값들이 속해있을텐데

그 각각의 속성값들에 lambda x: 뒤에 적혀있는 조건을 걸어주는 것이다.

x * 100 if x % 1 == 0 else (x + 0.01) * 100 이라고 적혀있는데 해석해보면

만약 x를 1로 나눴을때의 나머지가 0이라면 x * 100을,

그렇지 않다면 x에 0.01을 더해주고 그 값에다 100을 곱해줘라

이다.

원래 if문을 쓸때 1) 조건을 쓰고, 2) 조건에 해당됐을때 반영하고자 하는 코드를 작성해주는데

lambda에서는 2)를 먼저 써주고 1)을 써준다.

 

위에서는 data['startprice']와같이 인덱싱을 먼저 해주고 .apply를 했는데

데이터프레임 전체에 lambda를 적용할수도 있다.

data.apply(lambda x: price(x['startprice']), axis=1)

price는 미리 만들어둔 함수다.

앞에 경우에서였다면

data['startprice'].apply(lambda x: price(x))

라고 적었을텐데 이번 경우에는

lambda x: 뒤에 함수명(x['컬럼명'])을 적어주고, axis=1을 적어준다.

여기서 axis=1을 적어주는 이유는 우리가 함수를 적용하고자하는 것이 column(열)이다라는 것을 알려주기위함이다.