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

Pandas DataFrame을 왼쪽 외부 조인(Left Outer Join)으로 병합하는 방법

Pandas에서 두 개의 DataFrame을 병합하려면 merge() 함수를 사용합니다. 왼쪽 외부 조인(Left Outer Join)은 merge() 함수의 how 매개변수에 다음과 같이 설정하여 구현할 수 있습니다.

how = "left"

왼쪽 외부 조인은 왼쪽 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를 기준으로 병합하고, how 매개변수에 "left"를 지정하면 왼쪽 외부 조인이 수행됩니다.

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

예제

다음은 전체 코드입니다.

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="left"로 왼쪽 외부 조인 수행
mergedRes = pd.merge(dataFrame1, dataFrame2, on='Car', how="left")
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     7000.0
1   Lexus    150     1500.0
2    Audi    110        NaN
3 Mustang     80     8000.0
4 Bentley    110        NaN
5  Jaguar     90     6000.0

결과 해석

출력 결과를 보면 왼쪽 DataFrame(dataFrame1)의 모든 행(BMW, Lexus, Audi, Mustang, Bentley, Jaguar)이 그대로 유지된 것을 확인할 수 있습니다. 반면 오른쪽 DataFrame(dataFrame2)에는 Audi와 Bentley 데이터가 존재하지 않기 때문에, 해당 행의 Reg_Price 값은 NaN으로 표시됩니다. 이처럼 왼쪽 DataFrame의 데이터는 모두 보존하면서 오른쪽 DataFrame에서 일치하지 않는 부분만 결측값으로 처리하는 것이 왼쪽 외부 조인의 핵심 특징입니다.