[pandas] merge 1
DataFrame의 결합(merge)(1)
두 DataFrame을 Database 결합(join)하기 위해서는 두개의 DataFrame과 기준(
on
), 방법(how
) 옵션이 들어간다. 여기서는 full outer join, full left join, full right join에 대해서 알아본다. 모든것은 아래의 예제에 대해서 설명된다.
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)
1. full outer join
Outer join은 두
DataFrame
의 합집합으로 생각할 수 있다. option에는how='outer'
가 입력된다.
result = pd.merge(df1, df2, on ='학번', how='outer')
display(result)
## 학번을 기준으로 합집합 연산을 합니다.
2. Full left join
Left join은 두
DataFrame
을df1
,df2
라 하면df1
에df2-df1
을 합집합 해준다고 생각 할 수 있다.
result1 = pd.merge(df1, df2, on='학번', how='left')
display(result1)
## 아래 display를 보면 df1에 (df2-df1) : 학과, 학점이 추가 되었다.
3. Full right join
Right join은 left join 과 마찬가지 역할로
df1
,df2
순서만 변했다고 생각 할 수 있다. 대신df2
의column
이 뒤에 붙는다.
result2 = pd.merge(df1, df2, on='학번', how='right')
display(result2)
반대로 df1
과 df2
순서를 바꿔보면
result3 = pd.merge(df2, df1, on='학번', how='right')
display(result3)
Full left join에서의 column
순서를 제외한 같은 결과물을 얻을 수 있다.
4. Inner join
merge
의 기본 default 값이고 두DataFrame
의 학번의 교집합을 연산을 하고 나머지column
을 다 가져온다.
result = pd.merge(df1,df2, on='학번',how='inner')
display(result)