inner, outer, left, right
데이터 구조와 문제에 맞게 적용
| Pandas의 merge 함수 | DataFrame의 join 메소드 |
|---|---|
| df1.merge(df2, on='c', how='inner') | df1.join(df2, on='c', how='inner') |
연결은 공유하는 Key 값을 사용하지 않고, 데이터를 기존 DataFrame 아래,우측에 붙여 연결
Pandas의 연결 구현 방법
pd.concat(df1, df2, axis, ... )
# axis = 0 : 행방향(위아래) axis = 1 : 열방향(좌우)
데이터 병합/연결 활용 예시

# 판다스 로딩
import pandas as pd
# 데이터 생성
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
DataFrame간 조인 조건을 만족하는 행을 합치는 것
# inner_join - 일치되는 것만 merge
inner_df = pd.merge(df1, df2, on='학번', how='inner')
display(inner_df)
조건에 부합하지 않는 행까지 포함시켜 결합하는 방법
outer_df = pd.merge(df1, df2, on='학번', how='outer')
첫번째를 기준 and 두번째를 기준 하여 DataFrame을 결합하는 방법
left_df = pd.merge(df1, df2, on='학번', how='left')
right_df = pd.merge(df1, df2, on='학번', how='right')
1) 같은 의미의 다른 컬럼명을 병합할 때
case 1 : 같은 의미 다른 컬럼명 -> 학번 vs 학생고유번호
# 데이터 생성
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
merged_df = pd.merge(df1, df1, left_on='학번', right_on='학번고유번호', how='inner')
display(merged_df)
#두개의 공통 키 중 하나 삭제
merged_df.drop('학생고유번호', axis=1)
2) 공유하는 컬럼이 없을 때
#데이터 생성
#양 데이터 인덱스로 병합 진행
merged_df1 = pd.merge(df1, df2, left_index=True, how='inner')
display(merged_df1)
#왼쪽은 학번, 오른쪽은 인덱스 기준
merged_df2 = pd.merge(df1, df2, left_on='학번', right_index=True, how='inner')
#join 사용 : 양쪽 데이터프레임의 인덱스 기준으로 병합
df1.join(df2, how='inner')
import numpy as np
import pandas as pd
np.random.seed(1) #예제를 위한 고정된 난수 설정
# 데이터 생성
df1 = pd.DataFrame(data1) #3x2 정수로 구성된 매트릭스 생성
display(df1)
df2 = pd.DataFrame(data2) #2x2 정수로 구성된 매트릭스 생성
display(df2)
concat
result_df = pd.concat([df1, df2], axis=1) # 0은 행, 1은 열
#outer join 과 concat 같은 결과
merge_df = pd.merge(df1, df2, left_index=True, right_index=True, how='outer')