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

Python Pandas – merge() 함수로 두 개의 DataFrame 손쉽게 병합하기

두 개의 Pandas DataFrame을 하나로 합치려면 merge() 함수를 사용하면 됩니다. 사용법은 매우 간단합니다. 병합하고 싶은 두 개의 DataFrame을 pd.merge() 함수의 인자로 전달하기만 하면 됩니다.

특별히 기준 열(key)을 지정하지 않으면, 두 DataFrame에 공통으로 존재하는 열(여기서는 Car)을 기준으로 자동 조인(inner join)이 수행됩니다.

1단계: 라이브러리 임포트

먼저 필요한 라이브러리를 별칭 'pd'로 가져옵니다.

import pandas as pd

2단계: 첫 번째 DataFrame 생성

차량 이름과 판매 대수를 담은 첫 번째 DataFrame을 만듭니다.

# Create DataFrame1
dataFrame1 = pd.DataFrame(
    {
        "Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
        "Units": [100, 150, 110, 80, 110, 90]
    }
)

3단계: 두 번째 DataFrame 생성

차량 이름과 등록 가격을 담은 두 번째 DataFrame을 만듭니다.

# Create DataFrame2
dataFrame2 = pd.DataFrame(
    {
        "Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Mercedes', 'Jaguar'],
        "Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000]
    }
)

4단계: merge() 함수로 병합

이제 merge() 함수를 호출하여 두 DataFrame을 병합합니다.

mergedRes = pd.merge(dataFrame1, dataFrame2)

전체 예제 코드

지금까지의 과정을 모두 포함한 전체 코드는 다음과 같습니다.

import pandas as pd

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

# Create DataFrame2
dataFrame2 = pd.DataFrame(
    {
        "Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Mercedes', 'Jaguar'],
        "Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000]
    }
)
print("\nDataFrame2 ...\n", dataFrame2)

# merge DataFrames
mergedRes = pd.merge(dataFrame1, dataFrame2)
print("\nMerged data frame...\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     Audi       5000
3  Mustang       8000
4  Mercedes      9000
5   Jaguar       6000

Merged data frame...
      Car   Units   Reg_Price
0     BMW     100        7000
1    Lexus     150        1500
2     Audi     110        5000
3  Mustang      80        8000
4   Jaguar      90        6000

결과 해석

병합된 결과를 보면 흥미로운 점을 발견할 수 있습니다. 기본적으로 merge()내부 조인(inner join) 방식으로 동작하기 때문에, 두 DataFrame에 모두 존재하는 차량만 결과에 포함됩니다. 따라서 첫 번째 DataFrame에만 있는 'Bentley'와 두 번째 DataFrame에만 있는 'Mercedes'는 최종 결과에서 제외되었습니다.

만약 한쪽에만 있는 데이터도 모두 유지하고 싶다면 how='outer', how='left', 또는 how='right' 옵션을 활용하면 됩니다.