본문 바로가기
프로그래밍

파이썬, 판다스를 활용하여 엑셀 중복값 비교 방법

by 최상급 정보 콜렉터 2023. 3. 20.

어렵게 방법을 찾았습니다.

파이썬에서 pandas를 활용하여 엑셀 2개를 비교한 후 중복값을 빼고 겹치지 않는 값만 새로운 엑셀에 넣는 방법을 알아냈습니다 흑흑.

 

제 코드를 참고하시고 도움이 되셨으면 합니다. 사실 이 코드 그대로 쓰면 두 엑셀의 시트를 비교하여 손쉽게 중복된 값을 제외하고 새로운파일명에 깔끔한 데이터만 넣어줍니다.

 

길을 헤메고 계신분들은 이 코드가 한 줄기 빛이 되길 바라며..

 

 

 
import pandas as pd

new_df = pd.DataFrame() # 새로운 데이터프레임 생성

try: # 예외가 발생할 수 있는 코드
    df1 = pd.read_excel('test2.xlsx', sheet_name=None) # 첫 번째 엑셀 파일의 모든 시트를 읽음
    df2 = pd.read_excel('test1.xlsx', sheet_name=None) # 두 번째 엑셀 파일의 모든 시트를 읽음
   
    for sheet in df1.keys(): # 첫 번째 엑셀 파일의 모든 시트에 대해 반복
        print(f'Processing sheet: {sheet}') # 현재 처리중인 시트 이름 출력
        df1_sheet = df1[sheet] # 첫 번째 엑셀 파일의 해당 시트를 선택
        df2_sheet = df2[sheet] # 두 번째 엑셀 파일의 해당 시트를 선택
       
        for i in range(len(df1_sheet)): # 첫 번째 엑셀 파일의 해당 시트의 모든 행에 대해 반복
            try: # 예외가 발생할 수 있는 코드
                sentence1 = df1_sheet.iloc[i].values[0] # 첫 번째 문장 선택 (첫 번째 컬럼 값)
                sentence2 = df2_sheet.iloc[i].values[0] # 두 번째 문장 선택 (첫 번째 컬럼 값)
               
                words1 = sentence1.split() # 첫 번째 문장을 단어로 나눔
                words2 = sentence2.split() # 두 번째 문장을 단어로 나눔
               
                common_words = set(words1).intersection(set(words2)) # 공통된 단어 찾기
               
                if len(common_words) == 0: # 공통된 단어가 없다면
                    print(f'Found new sentence: {sentence1}') # 새로운 문장 발견 출력
                    new_df = new_df.append(df1_sheet.iloc[i]) # 새로운 데이터프레임에 추가
                   
            except IndexError as e:
                print(f'예외가 발생했습니다: {e}') # 인덱스 에러가 발생했을 때 처리할 코드
                continue # 다음 반복으로 넘어감
            except Exception as e: # 그 외의 예외가 발생했을 때 처리할 코드
                print(f'예외가 발생했습니다: {e}')
                break # 반복문 종료
               
    new_df.to_excel('new_file.xlsx', index=False) # 새로운 데이터프레임을 엑셀 파일로 저장
   
except FileNotFoundError as e: # 파일이 없는 경우 처리할 코드
    print(f'파일을 찾을 수 없습니다: {e}')
except ValueError as e: # 잘못된 값이 있는 경우 처리할 코드
    print(f'잘못된 값이 있습니다: {e}')
except Exception as e: # 그 외의 예외가 발생했을 때 처리할 코드
    print(f'예외가 발생했습니다: {e}')