[pandas] merge 1

DataFrame의 결합(merge)(1)

두 DataFrame을 Database 결합(join)하기 위해서는 두개의 DataFrame과 기준(on), 방법(how) 옵션이 들어간다. 여기서는 full outer join, full left join, full right join에 대해서 알아본다. 모든것은 아래의 예제에 대해서 설명된다.

image-20200915024044786

import numpy as np
import pandas as pd 
data1 = {'학번' : [1, 2, 3, 4],
        '이름' : ['이지안','박동훈','이순신','강감찬'],
        '학년' : [2, 4, 1, 3]}


data2 = {'학번' : [1, 2, 4 ,5],
         '학과' : ['CS','MATH','MATH', 'CS'],
         '학점' : [3.4, 2.9, 4.5, 1.2]}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
display(df1)
display(df2)

image-20200915022613912

image-20200915022626320

1. full outer join

Outer join은 두 DataFrame의 합집합으로 생각할 수 있다. option에는 how='outer' 가 입력된다.

result = pd.merge(df1, df2, on ='학번', how='outer')
display(result)
# 학번을 기준으로 합집합 연산을 합니다.

image-20200916165858323

2. Full left join

Left join은 두 DataFramedf1 , df2 라 하면 df1df2-df1 을 합집합 해준다고 생각 할 수 있다.

result1 = pd.merge(df1, df2, on='학번', how='left')
display(result1)
# 아래 display를 보면 df1에 (df2-df1) : 학과, 학점이 추가 되었다.

image-20200916165832779

3. Full right join

Right join은 left join 과 마찬가지 역할로 df1, df2 순서만 변했다고 생각 할 수 있다. 대신 df2column 이 뒤에 붙는다.

result2 = pd.merge(df1, df2, on='학번', how='right')
display(result2)

image-20200916170343364

반대로 df1df2 순서를 바꿔보면

result3 = pd.merge(df2, df1, on='학번', how='right')
display(result3)

image-20200916173630814

Full left join에서의 column 순서를 제외한 같은 결과물을 얻을 수 있다.

4. Inner join

merge의 기본 default 값이고 두 DataFrame의 학번의 교집합을 연산을 하고 나머지 column을 다 가져온다.

result = pd.merge(df1,df2, on='학번',how='inner')
display(result)

image-20200916215027731