AI 그게 뭔데
끄적끄적 개발일지
AI 그게 뭔데
전체 방문자
오늘
어제
  • 분류 전체보기 (342)
    • 논문 (5)
    • DL(Deep-Learning) (34)
      • 개념 (14)
      • Python 기초 (14)
      • Tensorflow (6)
      • Pytorch (0)
    • NLP (10)
    • OpenCV (53)
    • DevOps (10)
      • AWS (2)
      • Docker & Kubernetes (4)
      • Spark (3)
      • SQL (1)
    • MacOS (1)
    • React-Native (2)
    • BI (3)
      • GA(Google Analytics) (3)
      • Tableau (0)
    • 알고리즘 (221)
      • 백준 (76)
      • 프로그래머스 (108)
      • 기타 알고리즘 (37)

인기 글

태그

  • 백준
  • 연습문제
  • LEVEL2
  • 이코테
  • Python
  • 알고리즘
  • OpenCV
  • 파이썬
  • level1
  • 프로그래머스

최근 글

hELLO · Designed By 정상우.
AI 그게 뭔데

끄적끄적 개발일지

DL(Deep-Learning)/Python 기초

DataFrame 합치기2 (concat, merge, join)

2022. 1. 26. 22:27

데이터프레임 병합 : pd.merge()

merge() 함수는 두 데이터프레임을 병합하는 기능을 수행한다는 점에서 pd.concat()함수와 동일하다.

concat과의 차이점으로 merge는 두 데이터프레임을 각 데이터에 존재하는 고유값(key)을 기준으로 병합할때 사용한다.

 

Default : pd.merge(df_left, df_right, how='inner', on=None)

 

두 개의 데이터 프레임을 생성해준다.

 

df1 = pd.DataFrame({'data1': range(5), 
                    'key': list('abcde')})

df2 = pd.DataFrame({'data2': range(3), 
                    'key': list('efg')})

print(df1, '\n\n', df2)
더보기

[Output]

  data1 key
0 0 a
1 1 b
2 2 c
3 3 d
4 4 e

 

  data2 key
0 0 e
1 1 f
2 2 g

 

 

두 데이터 프레임을 아무 옵션을 주지않고 merge를 할 경우 아래와 같다.

 

result = pd.merge(df1, df2)
print(result)
더보기
  data1  key   data2
0 4 e 0

 

 

아무 옵션을 적용하지 않으면, on=None이므로 두 데이터의 공통 열 이름(key)을 기준으로 inner(교집합) 조인을 하게 된다.

 

 

merge()함수의 옵션

1. merge(how='outer')

result = pd.merge(df1, df2, on='key', how='outer')
print(result)
더보기

 


  data1 key data2
0 0.0 a NaN
1 1.0 b NaN
2 2.0 c NaN
3 3.0 d NaN
4 4.0 e 0.0
5 NaN f 1.0
6 NaN g 2.0

 

outer(합집합) join을 수행하면 공통되지 않는 값들에 대해 NaN 값을 반환한다.

 

2. merge(how='left')

result = pd.merge(df1, df2, on='key', how='left')
result
더보기
  data1 key data2
0 0 a NaN
1 1 b NaN
2 2 c NaN
3 3 d NaN
4 4 e 0.0

 

 

left join을 수행하면 df1를 기준으로 join을 수행하여 df2에 해당 key 값이 없는 경우NaN 값을 반환한다.

 

3. merge(how='right')

result = pd.merge(df1, df2, on='key', how='right')
result
더보기
  data1 key data2
0 4.0 e 0
1 NaN f 1
2 NaN g 2

 

 

right join을 수행하면 left join과 반대로 df1에 해당 key 값이 없는 경우 NaN값을 반환한다.

 

 


데이터프레임 결합 : join()

join함수는 merge()함수를 기반으로 만들어졌기 때문에 기본 작동방식이 비슷하지만 행 인덱스를 기준으로 데이터프레임을 병합한다는 점에서 차이가 있다.

 

Default : Dataframe.join(Dataframe2. how='left')

 

df1 = pd.DataFrame({
    'data1': range(7),
    'lkey': list('abcabca')},
    index=range(7))
    
df2 = pd.DataFrame({'data2': range(3), 'rkey': list('abd')}, index=[2, 3, 4])
더보기
  data1 lkey
0 0 a
1 1 b
2 2 c
3 3 a
4 4 b
5 5 c
6 6 a

 

 

  data2 rkey
2 0 a
3 1 b
4 2 d

 

result = df1.join(df2)
result
더보기
  data1 lkey data2 rkey
0 0 a NaN NaN
1 1 b NaN NaN
2 2 c 0.0 a
3 3 a 1.0 b
4 4 b 2.0 d
5 5 c NaN NaN
6 6 a NaN NaN

 

default값이 how=’left’, 이므로 df1의 행 인덱스(lkey)를 기준으로 결합된다.

 

'DL(Deep-Learning) > Python 기초' 카테고리의 다른 글

Google Colab 런타임 연결 유지 & 출력 삭제  (0) 2022.01.26
[Python] 파일 이름 변경하기  (0) 2022.01.26
DataFrame 합치기1 (concat, merge, join)  (0) 2022.01.26
[Python] Raw String이란?  (0) 2022.01.26
[Python] 파일과 디렉토리 경로 설정하기  (0) 2022.01.26
    AI 그게 뭔데
    AI 그게 뭔데
    공부와 개발 그리고 AI가 약간 첨가된 흔적 남기기

    티스토리툴바