컴퓨터/파이썬

파이썬(Python) - merge와 join

해피밀세트 2020. 3. 12. 20:49

 

 

컬럼 이름으로 merge

df1 = DataFrame({'철학':['1_동양철학','2_서양철학','3_심리학','4_윤리학'], 
                        '종교':['1_기독교','2_불교','3_천도교','4_이슬람교'], 
                        '과학':['1_물리학','2_화학','3_수학','4_천문학']}) 
df1
df2 = DataFrame({'과학':['3_수학','4_천문학','5_지학','6_생명과학'], 
                        '사회':['3_통계학','4_경제학','5_정치학','6_법학'], 
                        '예술':['3_건축물','4_음악','5_회화','6_스포츠']}) 
df2

 

 


on 사용

# 같은 데이터 & 같은 컬럼 이름으로 merge

pd.merge(df1,df2,on='과학')
# 같은 데이터 & 같은 컬럼 이름으로 merge /
   원하는 컬럼만 출력

pd.merge(df1[['종교','과학']],df2[['과학','사회']],
             on='과학') 

 

# 같은 데이터 & 다른 컬럼 이름으로 merge /
   원하는 컬럼만 출력

pd.merge(df1[['종교','과학']],df2[['과학','사회']],
             left_on='과학', right_on='과학') 

 


how 사용

a = df1[['종교','과학']]
b = df2[['과학','예술']]

 

# SQL에서 inner join

pd.merge(a,b, on='과학', how='inner')

# SQL에서 left outer join

pd.merge(a,b, on='과학', how='left')
# SQL에서 right outer join

pd.merge(a,b, on='과학', how='right')
# SQL에서 full outer join

pd.merge(a,b, on='과학', how='outer')

 


 

인덱스 이름으로 merge

 

중복되는 컬럼이 없을때 인덱스 이름으로 merge한다.

 

df1 = DataFrame([[20,40,30],[50,10,20],[40,25,30],[15,20,50]], 
                       columns = ['서울','분당','천안'], 
                       index = ['사과','딸기','포도','호두']) 
df1
df2 = DataFrame([[30,15,40],[25,30,45],[50,15,30],[20,50,10]], 
                       columns = ['인천','춘천','광주'], 
                       index = ['사과','딸기','포도','체리']) 
df2

 

 

# 인덱스 이름으로 merge한다. 
pd.merge(df1,df2,left_index=True,right_index=True) 

 

 

how 사용

# SQL에서 inner join

pd.merge(df1,df2,left_index=True,right_index=True,how='inner')
# SQL에서 left outer join

pd.merge(df1,df2,left_index=True,right_index=True,how='left') 
# SQL에서 right outer join

pd.merge(df1,df2,left_index=True,right_index=True,how='right') 
# SQL에서 full outer join

pd.merge(df1,df2,left_index=True,right_index=True,how='outer') 


  

 

 

join 사용

 

# left_index=True, right_index=True와 같은 기능

df1.join(df2)

 

 

# SQL에서 left outer join / 기본값

df1.join(df2,how='left') 
# SQL에서 right outer join

df1.join(df2,how='right') 
# SQL에서 inner join 

df1.join(df2,how='inner') 
# SQL에서 right outer join

df1.join(df2,how='outer')

 

반응형