본문 바로가기
Python

[pandas] DataFrame 합치기 : concat 과 merge

by ds31x 2024. 1. 12.

Pandas에서 mergeconcat은 DataFrame 를 합치는(결합하는) 데 사용되는 방법.


merge:

  • SQL join과 유사함.
  • DataFrame 간의 공통 column이나 index를 기준 column ( on parameter)으로 삼아 결합
  • inner, outer, left, right 다양한 join 조인 타입을 지원 (how parameter)함.
    • 때문에 합쳐지는 DataFrame이 다른 columns를 갖는 경우가 많음.
  • 주로 column based conjunction 에 사용됩니다.

다음의 code snippet을 참고하라 (기본으로 inner join이 사용된다.)

# Load Library
import pandas as pd

# Create DataFrame
student_data = {
    'student_id': ['19973037', '20220102', '20232323'],
    'grade': ['b', 'a', 'a+']
}

df_st_data = pd.DataFrame(
    student_data,
    columns=['student_id', 'grade']
)

student_credit = {
    'student_id': ['973037', '20220102', '20232323', '771231'],
    'credit': ['16', '18', '21', '888']
}
df_st_credit = pd.DataFrame(
    student_credit,
    columns=['student_id', 'credit']
)

# merge DataFrame
df_ret = pd.merge(
    df_st_data,
    df_st_credit,
    on = 'student_id'
)
df_ret.head(3)

 

관련된 예제는 다음을 참고할 것.

2024.01.12 - [Python] - [pandas] merge 예제.

 

[pandas] merge 예제.

merge는 특정 column을 기준으로 하는 결합이 필요한 경우 이용됨. 이 경우 사용되는 column은 on parameter를 통해 지정한다. # merge DataFrame df_ret = pd.merge( df_st_data, df_st_credit, on = 'student_id' ) df_ret.head(3) 만

ds31x.tistory.com


concat:

  • 단순히 두 DataFrame을 상하 또는 좌우로 연결.
  • index가 중복될 수 있으므로 주의가 필요함.
  • axis parameter를 사용해 행(0) 또는 열(1) 방향 의 결합을 선택 가능함.
# Load Library
import pandas as pd

# Create DataFrame
a = {
    'id': [0,1,2],
    'first': ['kim', 'lee', 'park'],
    'second': ['1', '2', '3']
}

df_a = pd.DataFrame(a, columns=['id','first','second'])

# Create DataFrame
b = {
    'id': [3,4,5],
    'first': ['tae', 'kwon', 'Um'],
    'last': ['jason', 'red', 'green']
}

df_b = pd.DataFrame(b, columns=['id','first','last'])

# Concatenate Dataframe by rows
df_c = pd.concat([df_a,df_b],axis=0)
df_d = pd.concat([df_a,df_b],axis=1)

Summary

  • merge는 더 복잡한 결합 조건(예: 특정 키에 따른 결합)에 적합하고,
  • concat은 데이터를 단순하게 이어 붙일 때 사용됨.

'Python' 카테고리의 다른 글

[pandas] 데이터 타입에 따른 column 추출  (0) 2024.01.12
[pandas] merge 예제.  (0) 2024.01.12
[Term] ETL Tools  (0) 2024.01.10
[pandas] dropna : missing value 처리 (삭제)  (0) 2024.01.09
[pandas] Column (or rows) 제거하기  (0) 2024.01.09