본문 바로가기
Python

[pandas] merge 예제.

by ds31x 2024. 1. 12.

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을 기준으로 하는 데이터프레임 결합이 필요한 경우 이용됨.


이 경우 사용되는 column은 on parameter를 통해 지정한다.

# 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

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


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

 

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

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