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

Python – NumPy를 활용해 두 Pandas DataFrame의 공통 열(컬럼) 구하기

두 개의 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의 스키마를 비교하거나 병합 전에 열 구조를 검증할 때 특히 유용한 방법입니다.