본문 바로가기
  • CobsLab upgrades your company value by AI technology
pandas

Pandas merge, join, concat의 차이와 활용 예시

by dmkdmk 2023. 3. 21.

안녕하세요 콥스랩(COBS LAB)입니다. 오늘 소개해드릴 주제는 판다스 데이터프레임 병합에 대해서  설명드리도록 하겠습니다. 

 

데이터프레임 합치기

판다스(Pandas)는 두 개 이상의 데이터프레임을 합치는 여러 가지 방법을 제공합니다. 이번에는 판다스를 사용하여 데이터프레임을 합치는 방법에 대해 알아보도록 하겠습니다.


데이터 합치기

판다스는 여러 개의 데이터 프레임을 합치는데에 유용한 다양한 함수를 제공합니다. 이번 예제에서는 concat(), merge(), join() 함수를 사용하여 데이터 프레임을 합치는 방법을 살펴보겠습니다.

 


concat() 

concat() 함수는 여러 개의 데이터 프레임을 하나로 합치는 함수입니다. 합치는 방향을 지정하여 가로로 합치는 concat(axis=1)와 세로로 합치는 concat(axis=0)를 지정할 수 있습니다.

# 데이터 프레임 생성
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3'],
                    'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']})

df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
                    'B': ['B4', 'B5', 'B6', 'B7'],
                    'C': ['C4', 'C5', 'C6', 'C7'],
                    'D': ['D4', 'D5', 'D6', 'D7']})

df3 = pd.DataFrame({'A': ['A8', 'A9', 'A10', 'A11'],
                    'B': ['B8', 'B9', 'B10', 'B11'],
                    'C': ['C8', 'C9', 'C10', 'C11'],
                    'D': ['D8', 'D9', 'D10', 'D11']})

# 세로로 합치기
result = pd.concat([df1, df2, df3], axis=0)
print(result)


위 코드에서는 concat() 함수를 사용하여 df1, df2, df3 데이터프레임을 세로로 합쳐서 result 변수에 저장한 후 출력하였습니다. 출력 결과는 다음과 같습니다.


 



merge() 

merge() 함수는 두 개의 데이터 프레임을 공통된 열 또는 인덱스를 기준으로 병합하는 함수입니다.

# 데이터 프레임 생성
df1 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                    'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3']})

df2 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                    'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']})

# key 열을 기준으로 병합
result = pd.merge(df1, df2, on='key')
print(result)

 merge() 함수를 사용하여 df1과 df2 데이터프레임을 병합한 후 result 변수에 저장한 후 출력하였습니다. merge() 함수는 on 매개변수에 병합 기준 열을 지정할 수 있습니다. 이 예제에서는 key 열을 기준으로 병합하였습니다. 출력 결과는 다음과 같습니다.

 



join() 

join() 함수는 두 개의 데이터 프레임을 인덱스를 기준으로 병합하는 함수입니다. 기본적으로 merge() 함수와 동일하게 동작하지만, 인덱스를 기준으로 병합하는 경우 join() 함수가 더 간단하게 사용할 수 있습니다.

# 데이터 프레임 생성
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3']},
                   index=['K0', 'K1', 'K2', 'K3'])

df2 = pd.DataFrame({'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']},
                   index=['K0', 'K1', 'K2', 'K3'])

# 인덱스를 기준으로 병합
result = df1.join(df2)
print(result)


위 코드에서는 join() 함수를 사용하여 df1과 df2 데이터프레임을 병합한 후 result 변수에 저장한 후 출력하였습니다. join() 함수는 기본적으로  인덱스를 기준으로 병합하므로, 별도의 on 매개변수를 지정하지 않아도 됩니다. 




댓글