두 개의 Pandas DataFrame을 공통 열(컬럼)을 기준으로 병합하려면 merge() 함수를 사용하고, on 매개변수에 해당 열의 이름을 지정하면 됩니다. 이 방식은 SQL의 JOIN과 유사하게 동작하며, 기본적으로 양쪽 DataFrame에 모두 존재하는 값만 남기는 내부 조인(inner join)으로 처리됩니다.
1. Pandas 라이브러리 불러오기
먼저 pandas 라이브러리를 별칭(alias)과 함께 임포트합니다.
import pandas as pd
2. 첫 번째 DataFrame 생성
차량 이름과 판매 대수를 담은 첫 번째 DataFrame을 만듭니다.
dataFrame1 = pd.DataFrame(
{
'Car': ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
'Units': [100, 150, 110, 80, 110, 90]
}
)
3. 두 번째 DataFrame 생성
차량 이름과 등록 가격을 담은 두 번째 DataFrame을 만듭니다.
dataFrame2 = pd.DataFrame(
{
'Car': ['BMW', 'Lexus', 'Audi', 'Mustang', 'Mercedes', 'Jaguar'],
'Reg_Price': [7000, 1500, 5000, 8000, 9000, 6000]
}
)
4. 공통 열 'Car'를 기준으로 병합
이제 두 DataFrame이 공유하는 열인 'Car'를 기준으로 병합합니다.
mergedRes = pd.merge(dataFrame1, dataFrame2, on='Car')
전체 예제 코드
다음은 위 과정 전체를 포함한 완성된 코드입니다.
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', 'Audi', 'Mustang', 'Mercedes', 'Jaguar'],
'Reg_Price': [7000, 1500, 5000, 8000, 9000, 6000]
}
)
print("\nDataFrame2 ...\n", dataFrame2)
# 공통 열 Car를 기준으로 DataFrame 병합
mergedRes = pd.merge(dataFrame1, dataFrame2, on='Car')
print("\nMerged data frame with common column...\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 with common column...
Car Units Reg_Price
0 BMW 100 7000
1 Lexus 150 1500
2 Audi 110 5000
3 Mustang 80 8000
4 Jaguar 90 6000
결과 해석
출력 결과를 보면 병합된 DataFrame에는 'Bentley'와 'Mercedes'가 포함되어 있지 않습니다. 그 이유는 merge() 함수가 기본적으로 내부 조인(inner join) 방식으로 동작하기 때문입니다. 즉, 두 DataFrame에 모두 존재하는 'Car' 값(BMW, Lexus, Audi, Mustang, Jaguar)만 최종 결과에 유지됩니다.
만약 한쪽에만 있는 데이터도 모두 포함하고 싶다면 how='outer', how='left', 또는 how='right' 옵션을 활용하면 됩니다. 예를 들어 pd.merge(dataFrame1, dataFrame2, on='Car', how='outer')로 설정하면 양쪽의 모든 차량이 병합되며, 매칭되지 않는 값은 NaN으로 표시됩니다.