[빅분기 실기] 판다스 (Pandas) 데이터 프레임 합치기

2024. 11. 16. 16:58빅데이터 분석기사

반응형

1. 단순 병합

데이터 프레임을 위-아래 또는 왼쪽-오른쪽으로 연결할 때 concat()을 사용한다.

다음과 같이 데이터를 입력한다.

 

import pandas as pd

appetizer = pd.DataFrame({
  'Menu' : ['Salad', 'Soup', 'Bread'],
  'Price' : [5000, 3000, 2000]
})

main = pd.DataFrame({
  'Menu' : ['Steak', 'Pasta', 'Chicken'],
  'Price' : [15000, 12000, 10000]
})

print(appetizer)
print(main)

 

concat()은 기본적으로 위-아래로 합친다.

합쳤을 때 기존 데이터에서 갖고 있던 인덱스 번호를 유지한다.

인덱스 번호를 새롭게 설정하려면 ignore_index = True 옵션을 추가한다.

 

full_menu = pd.concat([appetizer, main], ignore_index = True)
full_menu

 

concat 위쪽-아래쪽 결과

 

왼쪽 - 오른쪽을 합칠 때에는 axis = 1로 변경한다.

 

full_menu = pd.concat([appetizer, main], axis = 1)
full_menu

 

concat 왼쪽-오른쪽 결과

 

2. 키(key) 기준 병합

특정 키를 기준으로 합칠 때가 있다.

예를 들어, 첫 번째 데이터에는 메뉴와 가격이 있고 두 번째 데이터에는 메뉴와 칼로리가 있다.

두 데이터를 합치려고 하는데 메뉴 순서가 달라 왼쪽-오른쪽을 합칠 수 없다.

 

메뉴를 기준으로 병합하고자 할 때 merge()를 활용한다.

on='Menu' 설정을 통해 왼쪽에 있는 데이터의 메뉴를 기준으로 오른쪽 데이터가 합쳐진다.

 

price = pd.DataFrame({
  'Menu' : ['Salad', 'Soup', 'Steak', 'Pasta'],
  'Price' : [5000, 3000, 15000, 12000]
})

cal = pd.DataFrame({
  'Menu' : ['Soup', 'Steak', 'Pasta', 'Salad'],
  'Calories' : [100, 500, 400, 150]
})

 

menu_info = pd.merge(price, cal, on = 'Menu')
menu_info

 

merge 후 결과