개발로 자기계발
728x90
def merge_dataframes(df_list: list, merge_option: str, column: str):
    """
    여러 개의 DataFrame을 공통 column을 기준으로 병합하는 메소드.
    :param df_list: 병합할 DataFrame들의 리스트
    :param merge_option: 병합 옵션 ('inner', 'outer', 'left', 'right' 중 하나)
    :param column: 병합 기준이 되는 공통 column의 이름
    :return: 병합된 DataFrame
    """
    merged_df = reduce(lambda x, y: pd.merge(x, y, how=merge_option, on=column), df_list)
    return merged_df

이 코드는 여러 개의 데이터프레임(df_list)을 하나의 데이터프레임(merged_df)으로 병합하는 것이다.
병합은 reduce 함수와 lambda 함수를 사용하여 수행되며, 병합의 방식은 merge_option 매개변수를 통해 결정되고, 병합의 기준이 되는 열은 column 매개변수를 통해 결정된다.

reduce 함수는 주어진 함수(lambda 함수)를 순차적으로 적용하여 데이터프레임 리스트(df_list)의 모든 요소를 단일 값(여기서는 하나의 데이터프레임)으로 줄인다.

 

이 과정을 간단한 예제를 통해 알아보자.
예를 들어, 다음과 같은 두 개의 데이터프레임이 있다고 가정한다:

 

1) df1

date A
2021-01-01 10
2021-01-02 20

2) df2

date B
2021-01-01 30
2021-01-02 40

 

이제 df_list에 이 데이터프레임들을 추가하고 병합 옵션과 기준 열을 설정한다:

df_list = [df1, df2]
merge_option = 'outer'
column = 'date'

 

병합을 시작하면 다음과 같은 과정을 거친다:


1. reduce 함수는 df_list의 첫 번째 데이터프레임(df1)과 두 번째 데이터프레임(df2)을 lambda 함수에 전달한다.
2. lambda 함수는 두 데이터프레임을 pd.merge() 함수를 사용하여 병합한다. 병합 옵션은 merge_option으로, 기준 열은 column으로 설정된다.

 

병합된 데이터프레임의 결과는 다음과 같다:

date A B
2021-01-01 10 30
2021-01-02 20 40

병합된 데이터프레임이 reduce 함수의 결과로 반환된다.
이 예제에서는 두 개의 데이터프레임만 병합했지만, 이 방법은 여러 개의 데이터프레임을 순차적으로 병합할 때도 사용할 수 있다. 이 경우, reduce 함수는 리스트의 다음 데이터프레임을 가져와서 현재까지의 병합 결과와 함께 lambda 함수에 전달하며, 이 과정을 리스트의 모든 데이터프레임에 대해 수행한다.
728x90
SMALL
profile

개발로 자기계발

@김잠봉

틀린부분이나 조언이 있다면 언제든 환영입니다:-)