Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 공통 열의 일치하는 값을 기준으로 두 데이터프레임 병합하기

데이터 분석 작업을 하다 보면 서로 다른 두 개의 데이터프레임을 하나의 공통 열(키)을 기준으로 합쳐야 하는 경우가 자주 발생합니다. 이번 글에서는 pandas의 merge() 함수를 사용하여 동일한 열 값을 가진 행들만 병합하는 방법을 알아보겠습니다.

문제 상황

다음과 같은 두 개의 데이터프레임이 있다고 가정해 보겠습니다.

첫 번째 데이터프레임
 id country
0 1 India
1 2 UK
2 3 US
3 4 China

두 번째 데이터프레임
 id City
0 1 Chennai
1 11 Cambridge
2 22 Chicago
3 4 Chengdu

공통 열인 id를 기준으로 병합하면, 두 데이터프레임에 모두 존재하는 id 값(1, 4)만 결과에 포함됩니다.

id 열을 기준으로 병합한 결과
 id    country    City
0 1    India    Chennai
1 4    China    Chengdu

해결 방법

이 문제는 아래 단계를 따라 해결할 수 있습니다.

  • 두 개의 데이터프레임을 정의합니다.

  • pandas의 merge() 함수를 사용하여 공통 열 id를 기준으로 두 데이터프레임을 병합합니다.

pd.merge(first_df, second_df, how='inner', on='id')

여기서 how='inner'는 내부 조인(inner join) 방식을 의미하며, 양쪽 데이터프레임에 모두 존재하는 키 값만 결과로 반환합니다.

예제 코드

아래 예제를 통해 실제 구현 과정을 더 자세히 이해해 보겠습니다.

import pandas as pd
import numpy as np

first_df = pd.DataFrame({'id':[1,2,3,4], 'country':['India','UK','US','China']})
print("first dataframe is\n", first_df)

second_df = pd.DataFrame({'id':[1,11,22,4], 'City':['Chennai','Cambridge','Chicago','Chengdu']})
print("second dataframe is\n", second_df)

print("Merging data based on same column - id")
print(pd.merge(first_df, second_df, how='inner', on='id'))

실행 결과

first dataframe is
 id country
0 1 India
1 2 UK
2 3 US
3 4 China

second dataframe is
  id  City
0 1 Chennai
1 11 Cambridge
2 22 Chicago
3 4 Chengdu

Merging data based on same column - id
 id country City
0 1 India Chennai
1 4 China Chengdu

정리

pd.merge() 함수에서 on 매개변수로 기준이 될 열을 지정하고, how 매개변수로 조인 방식을 설정하면 됩니다. 'inner' 외에도 'left', 'right', 'outer' 등의 옵션을 사용하면 한쪽 데이터프레임의 모든 행을 유지하거나 모든 키 값을 포함하는 등 다양한 방식의 병합이 가능합니다. 상황에 맞는 조인 방식을 선택하여 데이터를 효율적으로 통합해 보세요.