본문 바로가기
목차
Python/pandas

[pandas] merge 예제.

by ds31x 2024. 1. 12.
728x90
반응형

merge와 concat의 차이점:

2024.01.12 - [Python] - [pandas] DataFrame 합치기 : concat 과 merge

 

[pandas] DataFrame 합치기 : concat 과 merge

Pandas에서 merge와 concat은 DataFrame 를 합치는(결합하는) 데 사용되는 방법.merge:SQL join과 유사함.두 DataFrame 간의 공통 column이나 index를 기준 column ( on parameter)으로 삼아 결합inner, outer, left, right 다양한

ds31x.tistory.com

 

merge는 특정 column을 기준으로 하는 데이터프레임 결합이 필요한 경우 이용됨.

 

merge 는 기본적으로 inner join임.
concat 이 기본적으로 outer join인 것과 다름에 유의.

merge 기준 설정:

merge의 경우 기준으로 사용되는 column은 on parameter를 통해 지정한다.

(합쳐지는 대상 데이터프레임 모두 해당 이름의 column을 가지고 있어야 함)

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

만일,

첫번째 argument (left라고 지칭됨)와 두번째 argument (right라고 지칭됨)로 지정된 DataFrame 객체들이

merge의 기준이 되는 column의 이름이 다를 경우에는

left_on (left에 해당하는 데이터프레임 객체에서 기준이 되는 column을 argument로 지정)와

right_on(right에 해당)을 이용함.

# merge DataFrame
df_ret = pd.merge(
    df_st_data,
    df_st_credit,
    left_on = 'student_id',
    right_on = 'student_id'
)

df_ret

index를 이용한 merge:

"column 기준"이 아닌 index를 기준으로 merge도 가능함.

특정 column이 아닌 index 를 이용하는 경우는
left_index=Trueright_index=True를 사용하면 됨.


4가지 join

merge에서 사용되는 네가지 join은 다음과 같음.

 

어떤 join으로 동작할지는 how 파라메터의 값으로 결정되는데,
참고로, default로는 inner가 사용됨

how로 사용가능한 값은 다음과 같음:

  • "left" : Left Join
  • "right" : Rigth Join
  • "inner" : Inner Join
  • "outter" : Outer Join
  • "cross" : Cartesian Product 를 수행함 (이 경우, on, left_on, right_on 등의 기준을 설정하는 파라미터 설정을 지정할 수 없음)
df_outer = pd.merge(
    df_st_data,
    df_st_credit,
    on = 'student_id',
    how = 'outer'
)

위의 조각코드들을 수행하려면 다음의 코드를 미리 수행하고 테스트해볼 것.

# 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']
)

같이 보면 좋은 자료

2025.05.16 - [Python] - [ML] pandas.DataFrame 에서 EDA에 적합한 메서드 요약

 

[ML] pandas.DataFrame 에서 EDA에 적합한 메서드 요약

Pandas DataFrame에서 탐색적 데이터 분석(EDA)에 사용할 수 있는 주요 메서드들은 다음과 같음:2024.05.18 - [분류 전체보기] - [ML] Exploratory Data Analysis (EDA) [ML] Exploratory Data Analysis (EDA)Exploratory Data Analysis (

ds31x.tistory.com


 

728x90