reduce와 lambda를 통한 데이터프레임 merge 함수

2023. 5. 5. 11:00·Database & Data/데이터 분석
728x90
SMALL
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
저작자표시 비영리 변경금지

'Database & Data > 데이터 분석' 카테고리의 다른 글

데이터 크롤하고 분석(Seaborn) - 7  (0) 2023.04.21
데이터 크롤하고 분석(Jupyter Lab) - 6  (0) 2023.04.20
데이터 크롤하고 분석(Seleniuum) - 5  (0) 2023.04.20
데이터 크롤하고 분석(정적 페이지와 동적 페이지) - 4  (0) 2023.04.19
데이터 크롤하고 분석(BeautifulSoup) - 3  (0) 2023.04.19
'Database & Data/데이터 분석' 카테고리의 다른 글
  • 데이터 크롤하고 분석(Seaborn) - 7
  • 데이터 크롤하고 분석(Jupyter Lab) - 6
  • 데이터 크롤하고 분석(Seleniuum) - 5
  • 데이터 크롤하고 분석(정적 페이지와 동적 페이지) - 4
동석해요
동석해요
공부하고 싶은게 많은, 사소한 IT 지식들 공유
    250x250
  • 동석해요
    개발로 자기계발
    동석해요
  • 전체
    오늘
    어제
    • 분류 전체보기 (226)
      • Develop (126)
        • 기초지식 (12)
        • FastAPI (102)
        • Django (11)
      • Database & Data (62)
        • 기초지식 (16)
        • MySQL (29)
        • PostgreSQL (8)
        • 데이터 분석 (9)
      • 인공지능 (11)
        • PyTorch (9)
      • Cloud (8)
        • AWS (4)
        • GCP (2)
      • 버그처리 (14)
      • 회고 & 일상 (5)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
동석해요
reduce와 lambda를 통한 데이터프레임 merge 함수
상단으로

티스토리툴바