본문 바로가기
판다스/중급 판다스

[pandas] 두 데이터 프레임에 공통으로 존재하는 행 추출하기

by 김판다t 2024. 10. 16.

두 데이터 프레임에 공통으로 존재하는 행 추출하기

 

때때로 두 데이터 프레임에서 공통으로 존재하는 행을 추출해야 하는 상황이 발생합니다. 예를 들어, 아래 코드에서 생성된 df1과 df2는 몇 가지 공통된 데이터를 포함하고 있습니다.

import pandas as pd

# 첫 번째 데이터 프레임 생성
df1 = pd.DataFrame({
    'colA': [10, 20, 50, 30],
    'colB': [50, 60, 20, 70],
    'colC': [90, 100, 80, 90]
})

# 두 번째 데이터 프레임 생성
df2 = pd.DataFrame({
    'colA': [55, 30, 20, 70], 
    'colB': [15, 70, 60, 10],
    'colC': [95, 90, 100, 30]
})

 

 

df1에서 df2와 공통된 행(즉, 인덱스 1과 3에 해당하는 행)을 추출하기 위해서는 merge 함수의 inner join을 사용합니다. 

df1.merge(df2, how='inner')

함수를 적용한 결과, df1에서 인덱스 1과 3에 해당하는 행이 추출되었지만, 새로운 인덱스가 할당됩니다. merge 함수는 기본적으로 인덱스를 유지하지 않기 때문에, 공통된 데이터만 추출되며 원래의 인덱스 정보는 사라지기 때문입니다.

 

만약 df1의 인덱스를 함께 추출하고자 한다면, df1에 reset_index 함수를 먼저 사용한 후 merge를 적용합니다. (df2에서의 인덱스를 추출하고자 한다면 df2에 reset_index 함수를 적용합니다.)

df1.reset_index().merge(df2, how='inner')

 

인덱스 1과 3에 해당하는 행이 추출되었지만 새로운 인덱스가 할당되었고, 인덱스의 정보도 index 열에 표기됩니다.

 

반대로, df1에만 존재하거나 df2에만 존재하는 데이터를 확인하고 싶다면, outer join을 사용하고 indicator=True을 입력하면 쉽게 차이를 알 수 있습니다.

df1.merge(df2, how='outer', indicator=True)

 


판다스 책이 출판되었습니다.

 

교보문고 구매 페이지, 알라딘 구매 페이지yes24 구매 페이지