아미(아름다운미소)

람다 함수로 사용자함수에 여러개 파라미터 전달하는 방법은? 본문

랭귀지/pandas

람다 함수로 사용자함수에 여러개 파라미터 전달하는 방법은?

유키공 2024. 6. 22. 17:59

람다 함수를 사용하여 3개의 파라미터를 전달하는 방법은 다음과 같습니다:

여기서 중요한 점은 람다 함수 내부에서 `my_function`을 호출할 때 4개의 인자를 전달해야 한다는 것입니다. 첫 번째 인자는 DataFrame의 각 행에 해당하는 값(`x`)이며, 나머지 3개의 인자는 `my_function`의 두 번째, 세 번째, 네 번째 파라미터에 해당하는 값들입니다.

이렇게 하면 DataFrame의 각 행에 대해 `my_function`이 호출되며, 3개의 추가 파라미터도 함께 전달됩니다.만약 이 3개의 파라미터 값이 고정되어 있다면, 람다 함수 외부에서 미리 정의해두고 사용할 수 있습니다:이렇게 하면 코드의 가독성이 높아지고, 파라미터 값을 쉽게 변경할 수 있습니다.

def my_function(x, param1, param2, param3):
    # 함수 내부 로직
    return result

param1 = 'value1'
param2 = 'value2' 
param3 = 'value3'

df['result_column'] = df.apply(lambda x: my_function(x['column_to_process'], param1, param2, param3), axis='columns')

컬럼값을 여러게 넘기려면

def my_function(col1, col2, col3, param1, param2):
    # 함수 내부 로직
    return result
    
df['result_column'] = df.apply(lambda x: my_function(x['column1'], x['column2'], x['column3'], param1, param2), axis='columns')

다른예:

import pandas as pd

# 데이터 프레임을 생성합니다
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': [7, 8, 9]
})

# 사용자 정의함수를 정의합니다
def custom_function(row, param1, param2):
    return row['A'] * param1 + row['B'] * param2

# 파라미터를 지정하고 apply 메서드를 사용하여 새로운 컬럼을 생성합니다
df['D'] = df.apply(lambda row: custom_function(row, 2, 3), axis=1)

print(df)

'랭귀지 > pandas' 카테고리의 다른 글

pandas 병렬처리  (0) 2024.06.27
타입지정  (0) 2024.06.26
pandas 날짜차이 분으로 환산  (0) 2024.06.24
fastapi mysql crud & javascript & flutter 예제  (0) 2024.06.22
pandas lamda 예제  (0) 2024.06.22
Comments