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

Pandas에서 오른쪽 외부 조인(Right Outer Join)으로 DataFrame 병합하기

Pandas에서 여러 개의 DataFrame을 하나로 합치려면 merge() 함수를 사용하면 됩니다. 이 중 오른쪽 외부 조인(Right Outer Join)은 merge() 함수의 how 매개변수에 아래 값을 설정하여 구현합니다.

how = 'right'

오른쪽 외부 조인은 오른쪽(두 번째) DataFrame의 모든 행을 그대로 유지하면서 병합하며, 왼쪽 DataFrame에 일치하는 키가 존재하지 않는 경우 해당 값은 NaN(결측치)으로 채워집니다.

먼저 pandas 라이브러리를 별칭(alias)과 함께 임포트합니다.

import pandas as pd

병합에 사용할 두 개의 DataFrame을 생성합니다.

# 첫 번째 DataFrame 생성
dataFrame1 = pd.DataFrame(
    {
        'Car': ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
        'Units': [100, 150, 110, 80, 110, 90]
    }
)

# 두 번째 DataFrame 생성
dataFrame2 = pd.DataFrame(
    {
        'Car': ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
        'Reg_Price': [7000, 1500, 5000, 8000, 9000, 6000]
    }
)

공통 열인 'Car'를 기준으로 두 DataFrame을 병합하되, how 매개변수에 'right'를 지정하면 오른쪽 외부 조인이 수행됩니다.

mergedRes = pd.merge(dataFrame1, dataFrame2, on='Car', how='right')

전체 예제 코드

다음은 위 과정을 모두 포함한 전체 예제입니다.

import pandas as pd

# 첫 번째 DataFrame 생성
dataFrame1 = pd.DataFrame(
    {
        'Car': ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
        'Units': [100, 150, 110, 80, 110, 90]
    }
)
print('DataFrame1 ...\n', dataFrame1)

# 두 번째 DataFrame 생성
dataFrame2 = pd.DataFrame(
    {
        'Car': ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
        'Reg_Price': [7000, 1500, 5000, 8000, 9000, 6000]
    }
)
print('\nDataFrame2 ...\n', dataFrame2)

# 공통 열 Car를 기준으로 병합하며, how='right'로 오른쪽 외부 조인 수행
mergedRes = pd.merge(dataFrame1, dataFrame2, on='Car', how='right')
print('\n오른쪽 외부 조인으로 병합된 DataFrame ...\n', mergedRes)

실행 결과

위 코드를 실행하면 아래와 같은 결과가 출력됩니다.

DataFrame1 ...
      Car  Units
0     BMW    100
1   Lexus    150
2    Audi    110
3 Mustang     80
4 Bentley    110
5  Jaguar     90

DataFrame2 ...
       Car  Reg_Price
0     BMW       7000
1   Lexus       1500
2   Tesla       5000
3 Mustang       8000
4 Mercedes      9000
5  Jaguar       6000

오른쪽 외부 조인으로 병합된 DataFrame ...
       Car  Units  Reg_Price
0     BMW  100.0       7000
1   Lexus  150.0       1500
2 Mustang   80.0       8000
3  Jaguar   90.0       6000
4   Tesla    NaN       5000
5 Mercedes   NaN       9000

결과 해석

병합 결과를 살펴보면 오른쪽 DataFrame(dataFrame2)에 있는 모든 차종(BMW, Lexus, Tesla, Mustang, Mercedes, Jaguar)이 그대로 유지된 것을 확인할 수 있습니다. 반면 왼쪽 DataFrame(dataFrame1)에는 Tesla와 Mercedes가 존재하지 않기 때문에, 이 두 행의 Units 값은 NaN으로 표시됩니다. 이처럼 오른쪽 DataFrame의 데이터를 모두 보존하면서 일치하지 않는 왼쪽 값을 결측치로 처리하는 것이 오른쪽 외부 조인의 핵심 동작 방식입니다.