Allen's 데이터 맛집

Pandas Merge 에러 : Passing 'suffixes' which cause duplicate columns {' ', ' ', '} is not allowed. 본문

Programming/Python

Pandas Merge 에러 : Passing 'suffixes' which cause duplicate columns {' ', ' ', '} is not allowed.

Allen93 2024. 7. 21. 17:45

문제 상황

Pandas의 merge 함수를 사용하여 여러 CSV 파일을 병합할 때 중복 열 이름으로 인해 다음과 같은 에러가 발생할 수 있습니다.

 

MergeError : Passing 'suffixes' which cause duplicate columns {' ', ' ', '} is not allowed.라는 에러는 데이터 프레임을 병합할 때 동일한 열 이름이 발생하여 충돌이 일어나기 때문입니다. 이 문제를 해결하기 위해서는 각 병합 단계에서 동일한 열 이름에 대해 다른 접미사를 지정해야 합니다.

기존코드

import pandas as pd

# 데이터 불러옴
df1_oxid = pd.read_csv('Data/Oxid_000.csv')
df1_soft = pd.read_csv('Data/Photo_Softbake_000.csv')
df1_litho = pd.read_csv('Data/Photo_lithography_000.csv')
df1_etch = pd.read_csv('Data/Etching_000.csv')
df1_ion = pd.read_csv('Data/Implant_000.csv')
df1_target = pd.read_csv('Data/Inspect_000.csv')

# 데이터 병합
m1 = pd.merge(df1_oxid, df1_etch, on='No_Die', how = 'inner')
m2 = pd.merge(m1, df1_litho, on='No_Die', how = 'inner')
m3 = pd.merge(m2, df1_etch, on='No_Die', how = 'inner')
m4 = pd.merge(m3, df1_ion, on='No_Die', how = 'inner')
m5 = pd.merge(m4, df1_target, on='No_Die', how = 'inner')

에러:

Passing 'suffixes' which cause duplicate columns {'Datetime_x', 'Wafer_Num_x', 'Lot_Num_x'} is not allowed.

 

해결 방법

이 문제는 suffixes 매개변수를 사용하여 각 병합 단계에서 중복 열 이름을 피함으로써 해결할 수 있습니다. 다음은 이를 해결하는 간단한 코드입니다:

 

import pandas as pd

# 데이터 불러오기
df1_oxid = pd.read_csv('Data/Oxid_000.csv')
df1_soft = pd.read_csv('Data/Photo_Softbake_000.csv')
df1_litho = pd.read_csv('Data/Photo_lithography_000.csv')
df1_etch = pd.read_csv('Data/Etching_000.csv')
df1_ion = pd.read_csv('Data/Implant_000.csv')
df1_target = pd.read_csv('Data/Inspect_000.csv')

# 병합 단계
m1 = pd.merge(df1_oxid, df1_soft, on='No_Die', how='inner', suffixes=('_oxid', '_soft'))
m2 = pd.merge(m1, df1_litho, on='No_Die', how='inner', suffixes=('', '_litho'))
m3 = pd.merge(m2, df1_etch, on='No_Die', how='inner', suffixes=('', '_etch'))
m4 = pd.merge(m3, df1_ion, on='No_Die', how='inner', suffixes=('', '_ion'))
m5 = pd.merge(m4, df1_target, on='No_Die', how='inner', suffixes=('', '_target'))

print(m5.head())

핵심 포인트

  • suffixes 매개변수 사용: 각 병합 단계에서 고유한 접미사를 지정하여 중복 열 이름을 방지합니다.

Pandas merge 함수 사용 시 중복 열 이름 문제는 suffixes 매개변수를 적절히 설정하여 간단히 해결할 수 있습니다. 위의 해결 방법을 통해 동일한 문제를 빠르게 해결하시기 바랍니다.