컬럼 이름으로 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 / |
how 사용
a = df1[['종교','과학']]
b = df2[['과학','예술']]
# SQL에서 inner join |
|
# 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') |
반응형
'컴퓨터 > 파이썬' 카테고리의 다른 글
파이썬(Python) - Pandas의 날짜함수 (0) | 2020.03.16 |
---|---|
파이썬(Python) - Pandas의 문자함수 (0) | 2020.03.16 |
파이썬(Python) - Pandas의 그룹함수들 (0) | 2020.03.11 |
파이썬(Python) - null 처리 (0) | 2020.03.11 |
파이썬(Python) - RANK (0) | 2020.03.10 |