데이터 분석가:Applied Data Analytics/판다스 데이터분석

6장_데이터프레임의 다양한 응용(데이터프레임 합치기)

데이터분석 2025. 2. 10. 17:59

# 라이브러리 불러오기
import pandas as pd

# 데이터프레임 만들기
df1 = pd.DataFrame({'a': ['a0', 'a1', 'a2', 'a3'],
                    'b': ['b0', 'b1', 'b2', 'b3'],
                    'c': ['c0', 'c1', 'c2', 'c3']},
                    index=[0, 1, 2, 3])
 df1

df2 = pd.DataFrame({'a': ['a2', 'a3', 'a4', 'a5'],
                    'b': ['b2', 'b3', 'b4', 'b5'],
                    'c': ['c2', 'c3', 'c4', 'c5'],
                    'd': ['d2', 'd3', 'd4', 'd5']},
                    index=[2, 3, 4, 5])
df2

# 2개의 데이터프레임을 위 아래 행 방향으로 이어 붙이듯 연결하기 
result1 = pd.concat([df1, df2])
result1

  • df1과 df2를 위아래(axis=0)로 단순 연결
  • 각 데이터프레임의 기존 인덱스를 그대로 유지
  • df2의 인덱스(0, 1, 2)가 그대로 유지됨 → 중복 인덱스 발생 가능!
  • 데이터프레임을 구분하기 어렵고, 연산 시 문제가 발생할 수도 있음

# ignore_index=True 옵션 설정하기 
result2 = pd.concat([df1, df2], ignore_index=True)
result2

 

  • df1과 df2를 위아래(axis=0)로 연결하면서, 인덱스를 새롭게 부여
  • ignore_index=True → 연결 후 0부터 새로 연속된 인덱스 부여
  • 기존 인덱스를 무시하고, 0부터 새롭게 연속된 인덱스 부여
  • 데이터 정렬과 인덱스 관리를 쉽게 할 수 있음

# join='inner' 옵션 적용하기(교집합)
result2_in = pd.concat([df1, df2], axis=0, join='inner')
result2_in

  • axis=0 → 위아래(행 방향)로 연결
  • join='inner' → 두 데이터프레임에서 공통된 열(교집합)만 유지
  • df1과 df2의 열 이름이 다를 경우, 공통된 열만 결과에 포함됨
  • 공통 열(B, C)만 유지됨 → A, D는 제거됨
  • 두 데이터프레임이 연결되었지만, 열이 교집합으로 제한됨
  • 원래의 인덱스 유지 (df2의 0, 1, 2 인덱스가 그대로 남음)

✅ join='inner' → 두 데이터프레임의 공통 열(교집합)만 유지하여 병합
✅ axis=0 → 위아래(행 방향)로 데이터 연결
결과: 공통 열(B, C)만 남고, A, D는 제거됨
사용 추천: 공통된 열만 활용해야 할 경우