기본형태
df.merge(right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)
# 데이터 프레임 만들기
adf = pd.DataFrame({'x1' : ['A', 'B', 'C'],
'x2' : [1, 2, 3]})
bdf = pd.DataFrame({'x1' : ['A', 'B', 'D'],
'x3' : ['T', 'F', 'T']})
위는 adf, 아래는 bdf라는 데이터프레임이 있다.
이때 x1 열을 키로 하여 adf 데이터프레임을 기준으로 병합하고 싶을 때 아래와 같이 how에는 기준이 되는 데이터프레임, on에는 키로하고자 하는 열이름을 넣음.
# x1을 키로 병합, 왼쪽(adf)을 기준으로
# 왼쪽의 adf에는 D가 없으므로 해당 값은 NaN으로 변함
pd.merge(adf, bdf, how = 'left', on = 'x1')
adf 말고 bdf 기준으로 병합하고 싶으면 이렇게 오른쪽으로 바꾸면 됨.
# x1을 키로 병합, 오른쪽(bdf)을 기준으로
# 오른쪽의 bdf에는 C가 없으므로 해당 값은 NaN으로 변함
pd.merge(adf, bdf, how='right', on='x1')
공통된 값끼리만 병합하려면 how='inner'로 바꾸면 된다.
pd.merge(adf, bdf, how='inner', on='x1')
adf, bdf의 공통된 열인 x1에서 모든 값을 출력하려면 how='outer'
pd.merge(adf, bdf, how='outer', on='x1')
# adf와 bdf의 특정 열을 비교해 공통 값이 존재하는 경우만 출력
# adf.x1열과 bdf.x1열은 A와 B가 같으므로 adf의 해당 값만 출력함
adf[adf.x1.isin(bdf.x1)]
adf[~adf.x1.isin(bdf.x1)]
pd.merge(adf, cdf)
pd.merge(adf, cdf, how='outer')
pd.merge(adf, cdf, how='outer', indicator=True)
pd.merge(adf, cdf, how='outer', indicator=True).query('_merge=="left_only"')
pd.merge(adf, cdf, how='outer', indicator=True).query('_merge=="left_only"').drop(columns=['_merge'])