Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python - intersection()으로 두 Pandas DataFrame의 공통 열(교집합) 구하기

Pandas DataFrame 간 공통 열(교집합) 구하기

두 개의 DataFrame에서 공통으로 존재하는 열을 추출하려면 intersection() 메서드를 사용하면 됩니다. 이 메서드는 집합 연산의 교집합 개념을 인덱스 객체(Index object)에 적용하여, 양쪽 DataFrame에 모두 포함된 열 이름만 반환합니다.

먼저 예제에 사용할 두 개의 DataFrame을 생성해 보겠습니다.

import pandas as pd

# dataframe1 생성
dataFrame1 = pd.DataFrame({
    "Car": ['Bentley', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
    "Cubic_Capacity": [2000, 1800, 1500, 2500, 2200, 3000],
    "Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000],
})

# dataframe2 생성
dataFrame2 = pd.DataFrame({
    "Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
    "Units_Sold": [100, 110, 150, 80, 200, 90]
})

위 코드에서 dataFrame1은 Car, Cubic_Capacity, Reg_Price 세 개의 열을 가지고 있고, dataFrame2는 Car, Units_Sold 두 개의 열을 가지고 있습니다. 이제 한쪽 DataFrame의 columns 속성에 intersection()을 호출하고 다른 DataFrame의 columns를 인자로 전달하면 공통 열을 손쉽게 구할 수 있습니다.

dataFrame2.columns.intersection(dataFrame1.columns)

전체 예제 코드

import pandas as pd

# dataframe1 생성
dataFrame1 = pd.DataFrame({
    "Car": ['Bentley', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
    "Cubic_Capacity": [2000, 1800, 1500, 2500, 2200, 3000],
    "Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000],
})

print("Dataframe1...\n", dataFrame1)

# dataframe2 생성
dataFrame2 = pd.DataFrame({
    "Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
    "Units_Sold": [100, 110, 150, 80, 200, 90]
})

print("Dataframe2...\n", dataFrame2)

# intersection()으로 공통 열 구하기
res = dataFrame2.columns.intersection(dataFrame1.columns)

print("\n공통 열...\n", res)

실행 결과

Dataframe1...
        Car  Cubic_Capacity  Reg_Price
0   Bentley            2000       7000
1     Lexus            1800       1500
2     Tesla            1500       5000
3   Mustang            2500       8000
4  Mercedes            2200       9000
5    Jaguar            3000       6000
Dataframe2...
        Car  Units_Sold
0      BMW         100
1    Lexus         110
2    Tesla         150
3  Mustang          80
4 Mercedes         200
5   Jaguar          90

공통 열...
Index(['Car'], dtype='object')

실행 결과를 보면 두 DataFrame에 모두 존재하는 유일한 열인 'Car'가 Index 형태로 반환된 것을 확인할 수 있습니다. 이처럼 intersection() 메서드를 활용하면 여러 DataFrame을 함께 다룰 때 공통 열을 빠르고 간편하게 파악할 수 있어, 데이터 병합이나 전처리 작업 전에 열 구조를 비교하는 데 매우 유용합니다.