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
'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 |