두 개의 DataFrame에서 서로 공유하는 열(공통 컬럼)을 찾으려면 intersect1d() 메서드를 사용하면 됩니다. 이 메서드는 NumPy에서 제공되므로 Pandas와 함께 NumPy도 함께 임포트해야 합니다.
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd import numpy as np
1. 두 개의 DataFrame 생성하기
예제를 위해 서로 다른 열을 가진 두 개의 DataFrame을 만들어 보겠습니다. 첫 번째 DataFrame은 4개의 열을, 두 번째 DataFrame은 2개의 열을 가지고 있습니다.
# 첫 번째 DataFrame 생성
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],
"Units_Sold": [100, 110, 150, 80, 200, 90]
})
# 두 번째 DataFrame 생성
dataFrame2 = pd.DataFrame({"Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
"Units_Sold": [100, 110, 150, 80, 200, 90]
})2. intersect1d()로 공통 열 구하기
NumPy의 intersect1d() 메서드에 두 DataFrame의 columns 속성을 인자로 전달하면, 두 DataFrame이 공유하는 열 이름을 배열 형태로 반환받을 수 있습니다.
res = np.intersect1d(dataFrame2.columns, dataFrame1.columns)
전체 예제 코드
import pandas as pd
import numpy as np
# 첫 번째 DataFrame 생성
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],
"Units_Sold": [100, 110, 150, 80, 200, 90]
})
print("Dataframe1...\n", dataFrame1)
# 두 번째 DataFrame 생성
dataFrame2 = pd.DataFrame({"Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
"Units_Sold": [100, 110, 150, 80, 200, 90]
})
print("Dataframe2...\n", dataFrame2)
# intersect1d()를 사용해 공통 열 구하기
res = np.intersect1d(dataFrame2.columns, dataFrame1.columns)
print("\nCommon columns...\n", res)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Dataframe1...
Car Cubic_Capacity Reg_Price Units_Sold
0 Bentley 2000 7000 100
1 Lexus 1800 1500 110
2 Tesla 1500 5000 150
3 Mustang 2500 8000 80
4 Mercedes 2200 9000 200
5 Jaguar 3000 6000 90
Dataframe2...
Car Units_Sold
0 BMW 100
1 Lexus 110
2 Tesla 150
3 Mustang 80
4 Mercedes 200
5 Jaguar 90
Common columns...
['Car' 'Units_Sold']정리
결과를 보면 두 DataFrame 사이에 공통으로 존재하는 열은 'Car'와 'Units_Sold' 두 개입니다. 이처럼 np.intersect1d()는 두 배열(또는 Index 객체)의 교집합을 정렬된 형태로 반환하기 때문에, DataFrame 간의 공통 열을 빠르고 간편하게 확인할 수 있습니다. 대용량 데이터에서 여러 DataFrame의 스키마를 비교하거나 병합 전에 열 구조를 검증할 때 특히 유용한 방법입니다.