pandas에서 길이가 서로 다른 두 개의 DataFrame을 병합하려면 merge() 메서드를 사용해야 합니다. 이번 글에서는 길이가 4인 DataFrame과 길이가 6인 DataFrame을 병합하는 과정을 예제와 함께 살펴보겠습니다.
1. 첫 번째 DataFrame 생성 (길이 4)
먼저 'Car' 열 하나만 가진 간단한 DataFrame을 만들어 보겠습니다.
dataFrame1 = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Audi', 'Jaguar']
}
)
print("DataFrame1 ...\n", dataFrame1)
print("DataFrame1 length = ", len(dataFrame1))2. 두 번째 DataFrame 생성 (길이 6)
다음은 행 수가 더 많은, 즉 길이가 6인 두 번째 DataFrame입니다.
dataFrame2 = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley']
}
)
print("\nDataFrame2 ...\n", dataFrame2)
print("DataFrame2 length = ", len(dataFrame2))3. merge()로 DataFrame 병합하기
이제 merge() 메서드를 사용해 두 DataFrame을 병합합니다. 여기서 how='left' 옵션은 왼쪽에 위치한 기준 DataFrame(dataFrame2)의 모든 행을 그대로 유지하면서 병합하라는 의미입니다.
mergedRes = dataFrame2.merge(dataFrame1, how='left')
참고로 how 파라미터에는 'left', 'right', 'inner', 'outer' 등의 값을 지정할 수 있으며, 각 값에 따라 병합 시 어떤 행을 기준으로 유지할지가 달라집니다. 길이가 다른 DataFrame을 병합할 때는 기준이 되는 쪽의 행을 모두 살리는 'left' 또는 'outer'를 주로 사용합니다.
전체 예제 코드
지금까지의 내용을 하나로 합친 전체 코드는 다음과 같습니다.
import pandas as pd
# DataFrame1 생성
dataFrame1 = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Audi', 'Jaguar']
}
)
print("DataFrame1 ...\n", dataFrame1)
# DataFrame1 길이 확인
print("DataFrame1 length = ", len(dataFrame1))
# DataFrame2 생성
dataFrame2 = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley']
}
)
print("\nDataFrame2 ...\n", dataFrame2)
# DataFrame2 길이 확인
print("DataFrame2 length = ", len(dataFrame2))
# DataFrame 병합
mergedRes = dataFrame2.merge(dataFrame1, how='left')
print("\nMerged data frame...\n", mergedRes)실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
DataFrame1 ...
Car
0 BMW
1 Lexus
2 Audi
3 Jaguar
DataFrame1 length = 4
DataFrame2 ...
Car
0 BMW
1 Lexus
2 Audi
3 Mercedes
4 Jaguar
5 Bentley
DataFrame2 length = 6
Merged data frame...
Car
0 BMW
1 Lexus
2 Audi
3 Mercedes
4 Jaguar
5 Bentley정리
결과를 보면 병합된 DataFrame은 기준이 된 dataFrame2의 길이인 6행을 그대로 유지한 것을 확인할 수 있습니다. 이처럼 merge() 메서드와 how='left' 옵션을 활용하면 길이가 다른 DataFrame도 손쉽게 병합할 수 있습니다.